Android AndEngine TimerHandler未启动
我也面临着同样奇怪的问题。问题是我正在AnEngine BasegeActivity中创建一个简单的TimerHandler,并将其注册到Scene,但它还没有开始。我不知道我哪里出了问题,代码在这里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
@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);
}