重置发动机中的计时器

时间:2012-06-18 19:15:26

标签: java android andengine

我有这个课程,我用它来设置游戏期间的间隔。

public class Timer implements IUpdateHandler {
    // ===========================================================
    // Constants          
    // ===========================================================

    // ===========================================================          
    // Fields        
    // ===========================================================
    private ITimerCallback mCallback;
    private float mInterval;

    private float mSecondsElapsed;
    // ===========================================================          
    // Constructors          
    // ===========================================================
    public Timer(final float pInterval, final ITimerCallback pCallback) {
            this.mInterval = pInterval;
            this.mCallback = pCallback;
    }
    // ===========================================================          
    // Getter & Setter          
    // ===========================================================
    public void setInterval(final float pInterval) {
            this.mInterval = pInterval;
    }
    // ===========================================================          
    // Methods for/from SuperClass/Interfaces          
    // ===========================================================  
    @Override
    public void onUpdate(float pSecondsElapsed) {
            this.mSecondsElapsed += pSecondsElapsed;
            if(this.mSecondsElapsed >= this.mInterval) {
                    this.mSecondsElapsed -= this.mInterval;
                    this.mCallback.onTick();
            }
    }
    @Override
    public void reset() {
            this.mSecondsElapsed = 0;

    }
    // ===========================================================          
    // Methods          
    // ===========================================================  

    // ===========================================================          
    // Inner and Anonymous Classes          
    // ===========================================================
    public interface ITimerCallback {
            public void onTick();
    }
}

问题是我需要找到一种方法来暂停它,或者在需要时完全重置时间。

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

该类具有用于此目的的reset()方法。如果你想暂停它,你可能想要在类中添加一个私有布尔值并创建一个pause()方法来调用 - 在pause方法中设置你的暂停布尔值。然后修改onUpdate()方法并添加if (!paused) { //do rest of onUpdate here }

您可能还需要一个unPause()方法 - 或者只是在传入所需状态时创建一个方法,例如setPause(boolean state) {}