AndEngine TimerHandler无法启动

时间:2013-11-19 18:39:56

标签: android andengine game-engine

我面临同样的奇怪问题。问题是我在AndEngine BaseGaeActivity中创建了一个简单的TimerHandler并将其注册到Scene,但它还没有开始。我不知道我在哪里出错了代码。

@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)
        throws Exception {
    pOnCreateSceneCallback.onCreateSceneFinished(myScene);
    myScene.attachChild(mySprite);
            myScene.registerUpdateHandler(new TimerHandler(0.2f,true, new ITimerCallback() {

        @Override
        public void onTimePassed(TimerHandler pTimerHandler) {
            mySprite.setPosition(mySprite.getX(), mySprite.getY()+1);

        }
    }));


}

请帮我解决。谢谢大家。

1 个答案:

答案 0 :(得分:0)

看起来应该可行,但可能比你预期的要慢?它每秒只会移动10个像素,速度不是很快。

我将您的代码直接复制并粘贴到测试项目中,我可以确认它是否有效。它只是非常缓慢地将精灵沿着屏幕的y轴移动。

如果您要更新每次刷新,您可能希望覆盖Sprite的onManagedUpdate方法,如下所示:(示例来自andengineExamples MovingBallExample.java)

@Override
    protected void onManagedUpdate(final float pSecondsElapsed) {
        if(this.mX < 0) {
            this.mPhysicsHandler.setVelocityX(MovingBallExample.DEMO_VELOCITY);
        } else if(this.mX + this.getWidth() > MovingBallExample.CAMERA_WIDTH) {
            this.mPhysicsHandler.setVelocityX(-MovingBallExample.DEMO_VELOCITY);
        }

        if(this.mY < 0) {
            this.mPhysicsHandler.setVelocityY(MovingBallExample.DEMO_VELOCITY);
        } else if(this.mY + this.getHeight() > MovingBallExample.CAMERA_HEIGHT) {
            this.mPhysicsHandler.setVelocityY(-MovingBallExample.DEMO_VELOCITY);
        }

        super.onManagedUpdate(pSecondsElapsed);
    }