0

画面に触れて指を動かすと何かをし(pullanimation1と2)、画面を離すと何か他のことをします(fireanimation1と2)。pullAnimationまたはfireAnimationの実行中にユーザーが画面に触れることがあります。アニメーションが数回実行されると、エラーが発生します。ユーザーが画面をもう一度タッチしたときに、アニメーションが2回以上実行されないようにしたいと思います。注意:pullAnimation1と2、fireAnimation 1と2はAnimationDrawableですこれが私がやったことです:

    image2.setOnTouchListener(new OnTouchListener(){

        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
            boolean bool=false;
            boolean bool2=true;
            int action = arg1.getAction() & MotionEvent.ACTION_MASK;

            switch (action) {
            case MotionEvent.ACTION_DOWN:
            if (bool2) {
            startAnimation(pullAnimation1,pullAnimation2);
            bool=true;
            }
            break;
            case MotionEvent.ACTION_MOVE:
                if (bool2==true){
                Log.w("GAMEACTIVITY","move");
                bool=true;
                bool2=false;
                }
                break;
            case MotionEvent.ACTION_UP:
                startAnimation(fireAnimation1,fireAnimation2);
                bool=false;
                doPhotoTask();
                bool2=false;
                break;
            }
            return bool;
        }
    });
4

1 に答える 1

1

hasStarted() および hasEnded() メソッドを使用して、アニメーションが現在進行中かどうかを判断できるはずです。詳細については、ドキュメントを参照してください

次のような if ステートメントが機能する場合があります。

if((fireAnimation1.hasStarted() == false) || (fireAnimation1.hasEnded == true()){
  startAnimation(fireAnimation1, fireAnimation2);
}

reset()順番に再生した後、または次にタッチが発生したときに適切な値を返すメソッドを使用する必要があるかもしれないと思います。

編集: AnimationDrawableにはisRunning()メソッドがあり、View アニメーションよりも簡単です。

if(fireAnimation1.isRunning() == false){
  startAnimation(fireAnimation1, fireAnimation2);
}
于 2013-02-26T15:02:01.970 に答える