Andengine TimerHandler和检测碰撞
问题描述:
我正在开发一个LittleMan可以从一个块移动到另一个块并且某些块正在移动的游戏。我试图检测他何时移动到一个新的移动块,如果该块在他之下或移动了。我正在使用Andengine的TimerHandler
检查每隔0.1秒,但它不工作。下面的代码:Andengine TimerHandler和检测碰撞
private void OnMovingBlock(final int CurrentPosRow, final int CurrentPosColumn) {
this.getEngine().registerUpdateHandler(new TimerHandler(0.1f, true, new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {
if (LittleManPos[0] == CurrentPosRow && LittleManPos[1] == CurrentPosColumn) {
if (!LittleMan.collidesWith(MapRectangles[CurrentPosRow][CurrentPosColumn])) {
RestartScene();
}
}
}
}));
}
看来他可以移动到块,并用它在进出他身下动坐在那里,但它不叫RestartScene()
直到我动他。任何想法,我哪里错了?还是有另一种方法来做到这一点?
答
为什么不创建Timer
?
TimerTask task = new TimerTask(){
@Override
public void run(){
// your code goes here
}
};
Timer timer = new Timer();
timer.sechedule(task, 0, 100); // 100 --> 0.1 second
要取消Timer
,叫timer.cancel();
。
谢谢,这有助于很多!我会upvote您的评论,但它告诉我,我太新了,对不起= /我希望我可以对你提供的代码强加另一个问题:是否有方法使用timer.cancel()内运行方法?比如在if语句中我的原始代码中,如果条件匹配,那么我可以取消定时器?非常感谢! – terrierist 2015-03-31 23:48:14