【发布时间】:2012-12-25 13:03:50
【问题描述】:
我正在制作一个 Race Game,现在我想实现一个显示您的时间的时钟/计时器。
我想在一个 ChangeableText 中显示实际时间,在另一个 ChangeableText 中显示最佳单圈时间。
如何每秒或每 0.1 秒更新时间??
我如何检测一圈何时结束,例如在终点线(确定 x 和 y 位置)??
谢谢。
【问题讨论】:
标签: android andengine chronometer
我正在制作一个 Race Game,现在我想实现一个显示您的时间的时钟/计时器。
我想在一个 ChangeableText 中显示实际时间,在另一个 ChangeableText 中显示最佳单圈时间。
如何每秒或每 0.1 秒更新时间??
我如何检测一圈何时结束,例如在终点线(确定 x 和 y 位置)??
谢谢。
【问题讨论】:
标签: android andengine chronometer
试试这个:
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);
}
}
【讨论】:
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
}
}
});
【讨论】: