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