AndEngine TimerHandler - onTimePassed
AndEngine TimerHandler - onTimePassed
我正在使用 AndEngine 创建发射弹丸的物理模拟。随着它的模拟,我想画出寓言的轨迹。
为此,我根据射弹(sPlayer)的位置每秒绘制一个正方形。
time_handler=new TimerHandler(1, true, new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
if(simulationOn){ // every 1 second if the simulation is on
int px=(int)sPlayer.getSceneCenterCoordinates()[0];
int py=(int)sPlayer.getSceneCenterCoordinates()[1];
parabola_point=new Rectangle(px, py,4, 4,getVertexBufferObjectManager());
parabola_point.setColor(Color.WHITE);
if(!highest_point_found){ //if highest point not found, check it
float difY = (float) Math.floor(Math.abs(body.getLinearVelocity().y)) ;
if(Float.compare(0f, difY) == 0){ // if it is the highest point
highest_point_found=true;
drawPointText(); //draw the positions on the scene
parabola_point=new Rectangle(px, py,16, 16,getVertexBufferObjectManager());
parabola_point.setColor(Color.RED); // paint this point red
}
}
parabola.add(parabola_point);
scene.attachChild(parabola_point);
}
// pTimerHandler.reset();
}
});
我正在使用 FixedStepEngine:
@Override
public Engine onCreateEngine(final EngineOptions pEngineOptions) {
return new FixedStepEngine(pEngineOptions, 50);
}
问题是:
我不知道为什么调用 onTimePassed 的速度快于 1 秒间隔。它发生在几秒后。
我读到 可能是因为 FixedStepEngine 正在更改调用 'onTimePassed' 的间隔。如何解决?
在我看来,您并没有取消注册您的计时器处理程序,这会导致它们相互交叉。尝试取消注册 pTimerHandler
我正在使用 AndEngine 创建发射弹丸的物理模拟。随着它的模拟,我想画出寓言的轨迹。 为此,我根据射弹(sPlayer)的位置每秒绘制一个正方形。
time_handler=new TimerHandler(1, true, new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
if(simulationOn){ // every 1 second if the simulation is on
int px=(int)sPlayer.getSceneCenterCoordinates()[0];
int py=(int)sPlayer.getSceneCenterCoordinates()[1];
parabola_point=new Rectangle(px, py,4, 4,getVertexBufferObjectManager());
parabola_point.setColor(Color.WHITE);
if(!highest_point_found){ //if highest point not found, check it
float difY = (float) Math.floor(Math.abs(body.getLinearVelocity().y)) ;
if(Float.compare(0f, difY) == 0){ // if it is the highest point
highest_point_found=true;
drawPointText(); //draw the positions on the scene
parabola_point=new Rectangle(px, py,16, 16,getVertexBufferObjectManager());
parabola_point.setColor(Color.RED); // paint this point red
}
}
parabola.add(parabola_point);
scene.attachChild(parabola_point);
}
// pTimerHandler.reset();
}
});
我正在使用 FixedStepEngine:
@Override
public Engine onCreateEngine(final EngineOptions pEngineOptions) {
return new FixedStepEngine(pEngineOptions, 50);
}
问题是:
我不知道为什么调用 onTimePassed 的速度快于 1 秒间隔。它发生在几秒后。
我读到 可能是因为 FixedStepEngine 正在更改调用 'onTimePassed' 的间隔。如何解决?
在我看来,您并没有取消注册您的计时器处理程序,这会导致它们相互交叉。尝试取消注册 pTimerHandler