我有一个在画布中运行的 javascript 应用程序。它适用于android,除了当你用手指在屏幕上拖动时,整个网页都会冻结。有没有办法阻止这种情况发生?
问问题
1305 次
4 回答
3
您提出问题的方式并没有显示出非常丰富的信息。
Web 应用程序在获取 android 的全部功能方面存在一些限制。
您的陈述我有一个在画布中运行的 javascript 应用程序,乍一看 似乎您在应用程序中使用了 android 画布。
这是链接
这可以帮助您在 android 中运行 html5 canvas
于 2012-04-19T07:03:15.677 回答
1
这取决于您在 aMotionEvent.ACTION_DOWN
和 MOVE 上的代码中执行的操作......您应该有一些例程绘制画布。该例程不应被任何其他例程打断。
不确定这是否可以解决您的问题或提供任何见解,但这里有;
例如;
protected void onDraw(Canvas canvas) {
// fills the canvas with black
canvas.drawColor(Color.BLACK);
// draw some stuff on it
backGnd.draw(canvas);
basket.draw(canvas);
for (int i = 0; i < AppleList.size();i++){
AppleList.get(i).draw(canvas);
}
}
运动事件将按如下方式处理(注意代码中的注释!);
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isTouchDisabled){
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// add code to pass the action down to the objects
basket.handleActionDown((int)event.getX(), (int)event.getY());
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
// the gestures
// only pass the move events to the objects that were previously touched (so action down entails checking for
// the location of the touch AND the object.. if they match, you set isTouched to true.
if (basket.isTouched()) {
// the basket was picked up and is being dragged
basket.setX((int)event.getX());
basket.setY((int)event.getY());
}
}
if (event.getAction() == MotionEvent.ACTION_UP) {
// Check buttons
if (btnMoreFruit.isTouched()){
btnMoreFruit.handleActionUp((int) event.getX(), (int) event.getY());
btnMoreFruit.setTouched(false);
}
if (btnLessFruit.isTouched()){
btnLessFruit.handleActionUp(this.getContext(), (int)event.getX(), (int)event.getY());
btnLessFruit.setTouched(false);
}
}
}
于 2012-04-16T14:58:49.550 回答
0
根据您在代码中的内容,当有人在画布上拖动手指(或鼠标)时,可能会发生大量处理。例如,在绘画应用程序中,每次更改像素时都会捕获用户焦点的 XY 位置。如果每个这些微小事件中的代码都不轻,客户端将在尝试赶上时挂起。
于 2012-04-09T06:06:58.597 回答
0
Android 在处理画布和 javascript 方面非常糟糕。可能这就是它也冻结的原因。
于 2013-04-09T17:52:55.760 回答