Andengine TimerHandler和检测冲突

时间:2015-03-31 00:41:08

标签: java android andengine

我正在开发一款游戏,其中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()直到我再次移动他。知道我哪里错了吗?还是有另一种方法可以做到这一点吗?

1 个答案:

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