Czy to dobre wdrożenie gameloop
Zaimplementowałem gameloop w Flash / Actionscript / Starling i chcę rzucić na ciebie, aby sprawdzić, czy jest to poprawna implementacja. Chciałem mieć podejście oparte na zmiennym czasie.
private var _deltaTime:Number = 0;
private var _lastTime:Number = 0;
private var _speed = 1000 / 40;
private function onEnterFrame() {
var now = new Date().getTime();
var delta = now - _lastTime;
_deltaTime += delta - _speed;
_lastTime = now;
//skip if frame rate to fast
if (_deltaTime <= -_speed) {
_deltaTime += _speed;
return;
}
update();
}
private function update() {
updateGameState();
if (_deltaTime >= _speed) {
_deltaTime -= _speed;
update();
}
}
Czuję, że mam stałą prędkość (mniej więcej).
Moje pytanie brzmi: czy istnieje lepsze podejście, aby ruchy były jeszcze gładsze.
To, co mnie naprawdę zaskakuje, to fakt, że nawet jeśli FPS jest dość stały (60FPS), ruch jest czasem wyboisty, ale płynniejszy niż na naiwnym gameloopie.