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