Android AndEngine TimerHandler未启动

Android AndEngine TimerHandler未启动,android,andengine,game-engine,Android,Andengine,Game Engine,我也面临着同样奇怪的问题。问题是我正在AnEngine BasegeActivity中创建一个简单的TimerHandler,并将其注册到Scene,但它还没有开始。我不知道我哪里出了问题,代码在这里 @Override public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception { pOnCreateSceneCallback.onCreateScene

我也面临着同样奇怪的问题。问题是我正在AnEngine BasegeActivity中创建一个简单的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);

        }
    }));


}

请帮我整理一下。谢谢大家。

看起来应该可以,但可能比你们预期的要慢?它每秒只移动10个像素,这不是很快

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

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

@覆盖
ManagedUpdate上的受保护无效(最终浮点psecondsPassed){
如果(this.mX<0){
这个.mpphysicandler.setVelocityX(movingBalleExample.DEMO_-VELOCITY);
}else if(this.mX+this.getWidth()>movingBalleExample.CAMERA\u WIDTH){
这个.mpphysicandler.setVelocityX(-movingBalleExample.DEMO_-VELOCITY);
}
if(this.mY<0){
这个.mpphysicandler.setVelocityY(movingBalleExample.DEMO_VELOCITY);
}else if(this.mY+this.getHeight()>movingBalleExample.CAMERA\u HEIGHT){
这个.mpphysicandler.setVelocityY(-movingBalleExample.DEMO_-VELOCITY);
}
super.onManagedUpdate(psecondseased);
}

Hi,谢谢你的回复,朋友..我观察了大约10分钟的屏幕,但是精灵并没有离开它的位置。我甚至改变了mySprite.setPosition(mySprite.getX(),mySprite.getY()+1);此行指向mySprite.setPosition(mySprite.getX(),mySprite.getY()+10);还是没动。你能在全班更新你的问题吗?问题一定在别的地方。另外:尝试以下操作:将行“pOnCreateSceneCallback.onCreateSceneFinished(myScene);”移动到更新处理程序之后,以便在之后调用它。看看这有什么不同。我通常使用SimpleBaseGameActivity而不是BaseGameActivity。此外,我看不到在哪里创建场景“myScene”。这应该发生在onCreateSecene方法中。
@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);
    }