Andengine TimerHandler和检测碰撞

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();

+0

谢谢,这有助于很多!我会upvote您的评论,但它告诉我,我太新了,对不起= /我希望我可以对你提供的代码强加另一个问题:是否有方法使用timer.cancel()内运行方法?比如在if语句中我的原始代码中,如果条件匹配,那么我可以取消定时器?非常感谢! – terrierist 2015-03-31 23:48:14