3

我正在制作一个 Race Game,现在我想实现一个显示您的时间的时钟/计时器。

我想在 ChangeableText 中显示实际时间,在另一个 ChangeableText 中显示最佳单圈时间。

我如何每秒或每 0.1 秒更新时间?

我如何检测一圈何时结束,例如在终点线(确定 x 和 y 位置)?

谢谢。

4

2 回答 2

7

尝试这个:

int count=60;
youScene.registerUpdateHandler(new TimerHandler(1f, true, new ITimerCallback() {
        @Override
        public void onTimePassed(TimerHandler pTimerHandler) {
                count--;
                youchangeabletext.setText(String.valueof(count));  
                if(count==0){
                 youScene.unregisterUpdateHandler(pTimerHandler);
                 //GameOver();
                 }        
               pTimerHandler.reset();

        }
}));

在这种情况下,参数“1f”是运行该方法的时间 1f = 1 秒,现在每秒运行该方法,当计数为“0”时,该方法将从游戏中删除。

现在为了检测一圈结束,您可以扩展您汽车的 Sprite 类:

public class Car extends AnimatedSprite {
            public Car(final float pX, final float pY, final TiledTextureRegion pTextureRegion, final VertexBufferObjectManager pVertexBufferObjectManager) {
                super(pX, pY, pTextureRegion, pVertexBufferObjectManager);
            }
//the method onManagedUpdate run in milliseconds
            @Override
            protected void onManagedUpdate(final float pSecondsElapsed) {
                 //for example when car is in the position 100 in x
                if(this.getX()>=100){
                          //lap finish
                }
                super.onManagedUpdate(pSecondsElapsed);
            }
        }
于 2012-12-26T18:23:30.197 回答
0
int time=110;

timerText = new Text(700, 440, resourcesManager.font, "10", new TextOptions(HorizontalAlign.RIGHT), vbom);

TimerHandler mTime = new TimerHandler(0.1f,true, new ITimerCallback(){

     @Override

     public void onTimePassed(TimerHandler pTimerHandler) {

          // TODO Auto-generated method stub

          time--;

          timerText.setText(""+(time/10));

          if(time==0){

             //Do something

          }

    }

 });
于 2013-11-21T06:26:54.060 回答