protected void setupTimer(float interval, uint repeat, float delay) { _elapsed = -1; _interval = interval; _delay = delay; _useDelay = FloatUtils.Big(_delay, 0); _repeat = repeat; _runForever = _repeat == CCScheduler.kCCRepeatForever; }
/** triggers the timer */ public void update(float dt) { if (FloatUtils.EQ(_elapsed, -1)) { _elapsed = 0; _nTimesExecuted = 0; } else { if (_runForever && !_useDelay) { //standard timer usage _elapsed += dt; if (FloatUtils.EB(_elapsed, _interval)) { trigger(); _elapsed = 0; } } else { //advanced usage _elapsed += dt; if (_useDelay) { if (FloatUtils.EB(_elapsed, _delay)) { trigger(); _elapsed = _elapsed - _delay; _nTimesExecuted += 1; _useDelay = false; } } else { if (FloatUtils.EB(_elapsed, _interval)) { trigger(); _elapsed = 0; _nTimesExecuted += 1; } } if (!_runForever && FloatUtils.Big(_nTimesExecuted, _repeat)) { cancel(); } } } }