5

我有一个在画布中运行的 javascript 应用程序。它适用于android,除了当你用手指在屏幕上拖动时,整个网页都会冻结。有没有办法阻止这种情况发生?

4

4 回答 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 方面非常糟糕。可能这就是它也冻结的原因。

http://www.youtube.com/watch?v=yDrPNXnH-rg

于 2013-04-09T17:52:55.760 回答