Я реализовал игровой цикл во Flash/Actionscript/Starling и хочу показать его вам, чтобы убедиться, что это правильная реализация. Я хотел иметь подход с переменным шагом по времени.
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();
}
}
Что я получил, так это то, что у меня постоянная скорость (более или менее).
Мой вопрос в том, есть ли лучший подход, чтобы движения выглядели еще более плавными.
Что меня действительно удивляет, так это то, что даже при том, что FPS в значительной степени постоянен (60 кадров в секунду), движение иногда неровное, но более плавное, чем с наивным игровым циклом.