5

キャンバスで実行される JavaScript アプリケーションがあります。Android でも動作しますが、指で画面上をドラッグすると Web ページ全体がフリーズします。これが発生しないようにする方法はありますか?

4

4 に答える 4

3

あなたの質問を表現する方法は、かなり豊富な情報を示しているわけではありません。

Web アプリには、android の完全な機能を取得するためのいくつかの制限があります。

あなたのステートメントI have a javascript application that runs in a canvas 、最初の外観では、アプリケーションで Android canvas を使用しているようです。

ここにリンクがあります

Androidでhtml5キャンバスを実行するのに役立ちます

于 2012-04-19T07:03:15.677 に答える
1

それは、コードで a と MOVE で何をするかによって異なりますMotionEvent.ACTION_DOWN...キャンバスを描画するルーチンが必要です。そのルーチンは、他のルーチンによって中断されるべきではありません。

これで問題が解決するかどうか、または洞察が得られるかどうかはわかりませんが、ここに行きます;

例えば;

 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);
  }  
 }

motionevent は次のように処理されます (コード内のコメントに注意してください!)。

 @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 は、canvas と javascript の処理がかなり苦手です。おそらくこれがフリーズする理由でもあります。

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

于 2013-04-09T17:52:55.760 に答える