Как запустить таймер обратного отсчета ТОЛЬКО при касании спрайта

#android #andengine #sprite #countdowntimer

#Android #andengine #спрайт #таймер обратного отсчета

Вопрос:

У меня есть спрайт (sprite1) и таймер обратного отсчета, и я хотел знать, есть ли способ заставить andengine запускать таймер обратного отсчета ТОЛЬКО при касании спрайта.

 Sprite sprite1; 
int time=10; 
@Override
public void onPopulateScene(Scene pScene,
        OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {

    sprite1= new Sprite(100, 100, squarer, this.mEngine.getVertexBufferObjectManager())

            {

            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y)  
            { 
                scene.setBackground(new Background(200,200,200));

            }

            };  
    TimerHandler mtimer= new TimerHandler(0.1f,true,new ITimerCallback() {

        @Override
        public void onTimePassed(TimerHandler pTimerHandler) {
            // TODO Auto-generated method stub 
            time--; 
            if (time==0){  
                scene.setBackground(new Background(0,0,120));
            }
        } 
  });

            this.scene.attachChild(sprite1); 
            this.scene.registerTouchArea(sprite1); 
            this.scene.registerUpdateHandler(mtimer);
    pOnPopulateSceneCallback.onPopulateSceneFinished();

}
}
  

Ответ №1:

вызовите таймер только в переопределенном методе onareatouched вашего спрайта

Комментарии:

1. как мне тогда вызвать таймер, не могли бы вы привести мне пример того, как это сделать

Ответ №2:

У вас должен быть таймер в переопределенном onAreaTouched. Все в методе onAreaTouched будет вызываться только при касании спрайта, попробуйте что-то вроде этого (не проверили код должным образом):

         @Override
        public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y)  
        { 
            scene.setBackground(new Background(200,200,200));
            TimerHandler mtimer= new TimerHandler(0.1f,true,new ITimerCallback() {

                @Override
                public void onTimePassed(TimerHandler pTimerHandler) {
                // TODO Auto-generated method stub 
                time--; 
            if (time==0){  
                scene.setBackground(new Background(0,0,120));
            }
           } 
        });
        }
       };