我正在开发一款游戏,其中LittleMan可以从一个块移动到另一个块,并且某些块正在移动。我试图检测他何时移动到一个新的移动区块,如果该区块在他下方或是否已经移动。我使用Andengine的TimerHandler
每0.1秒检查一次,但它无法正常工作。这是代码:
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()
直到我再次移动他。知道我哪里错了吗?还是有另一种方法可以做到这一点吗?
答案 0 :(得分:0)
为什么不创建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();
。