我面临同样的奇怪问题。问题是我在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);
}
}));
}
请帮我解决。谢谢大家。
答案 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);
}