1
我在Flash AS3中編寫遊戲,並使用此處提供的答案實現了我的遊戲循環:Is this a good implementation of the gameloop 但是,在通過dist增加我的movieclip的y位置後從速度* timeElapsed)動畫片段的y位置變爲負值。 我已經通過跟蹤每次更新中的動畫片段位置注意到了這個負值。MovieClip Y位置在更新循環中變成負值使用增量時間
見代碼:
public class GameWorld extends MovieClip {
var speed:Number = 250;
var balls:Array = [];
private var _lastTime:Number = 0;
public function GameWorld() {
createballs();
this.addEventListener(Event.ENTER_FRAME, loop);
}
public function loop(e:Event):void
{
var now = new Date().getTime();
var _delta = now - _lastTime;
_lastTime = now;
updateGameState(_delta/1000);
}
public function updateGameState(timeElapsed:Number):void
{
var dist:Number = speed * timeElapsed;
balls[0].y += dist;
trace(balls[0].y);
}
public function createballs():void
{
for(var i:int = 0; i < 1; i++)
{
var ball:Ball = new Ball();
ball.y = 100;
ball.x = 100;
addChild(ball);
balls.push(ball);
}
}
}
我想知道是什麼原因造成影片剪輯的這突如其來的負值y位置。
絕不指望當地時間只能前進。甚至沒有'flash.utils.getTimer'可以很簡單。另外檢查你的'速度'是否在某個地方不是負面的。編輯:你應該在開始遊戲循環之前用正確的值初始化'private var _lastTime:Number = 0;',否則你會得到第一個非常奇怪的值。 – Vesper
嗨,當我跟蹤德爾塔值時,它總是正面的,以及每個循環中的var dist。 – dawyda254