私は 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 がほぼ一定 (60FPS) であっても、単純なゲームループよりも動きがでこぼこしていることがありますが、滑らかであることです。