我已經在Flash/Actionscript/Starling中實現了一個gameloop,我想把它扔給你看看這是否是一個有效的實現。 我想有一個可變的時間步法。這是一個很好的實現gameloop
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) 這個運動有時比起樸素的gameloop來說是顛簸平順的。
不要創建新的日期各一次。我認爲應該有一個靜態函數。 – 2013-11-27 06:55:51