Je code un jeu en flash AS3 et j'ai implémenté ma boucle de jeu en utilisant la réponse fournie ici: Is this a good implementation of the gameloop Cependant, après avoir augmenté la position de mon MovieClip par dist (dist à partir de la vitesse * timeElapsed), la position y du MovieClip devient négative. J'ai remarqué cette valeur négative en traçant la position de movieclips à chaque mise à jour.La position de MovieClip Y devient négative sur la boucle de mise à jour en utilisant le delta
Code Voir:
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);
}
}
}
Je voudrais savoir ce qui est à l'origine de cette valeur négative soudaine de MovieClips position y.
Ne comptez jamais que l'heure locale ne peut aller de l'avant. Pas même 'flash.utils.getTimer' peut être simple. Vérifiez également si votre vitesse n'est pas négative quelque part. EDIT: Vous devez initialiser 'private var _lastTime: Number = 0;' avec une valeur correcte avant de commencer la boucle de jeu, sinon vous obtenez le premier incrément comme valeur TRES étrange. – Vesper
Salut, quand je trace la valeur delta, elle est toujours positive et aussi la dist distante dans chaque boucle. – dawyda254