嗨我需要帮助来停止使用3.0的flash游戏中的计时器,我需要这个来暂停游戏,因为我使用getTimer()函数移动一些目标,我可以让目标在游戏时停止运动暂停,但因为当我取消游戏时,getTimer()一直在运行,目标只是从屏幕上消失(它们的位置变化太快)。有没有办法停止计时器或更好的方式移动我的目标像getTimer一样平滑? her5e是我的代码:
//animates targets
private function MoveTarget(e:Event) {
if (!MovieClip(parent).pauseGame) {
//get time passed
timePassed = getTimer() - lastTime;
lastTime += timePassed;
}
//move the target
this.x += dx * timePassed/1000;
//check to see if the target is offscreen
switch (targetType) {
case "small":
if ( dx > 0 && this.x > 771 ) { //left->right target
deleteTarget(false);
} else if ( dx < 0 && this.x < -26 ) { //left<-right target
deleteTarget(false);
}
break;
case "medium":
if ( dx > 0 && this.x > 790 ) { //left->right target
deleteTarget(false);
} else if ( dx < 0 && this.x < -40 ) { //left<-right target
deleteTarget(false);
}
break;
case "big":
if ( dx > 0 && this.x > 800 ) { //left->right target
deleteTarget(false);
} else if ( dx < 0 && this.x < -50 ) { //left<-right target
deleteTarget(false);
}
break;
}
}
答案 0 :(得分:1)
这是一个简单的解决方案,但我认为您应该了解时间步是什么,这是游戏编程的一个关键概念,请参阅Fix Your Timestep!
if (!MovieClip(parent).pauseGame) {
//get time passed
timePassed = getTimer() - lastTime;
lastTime += timePassed;
}
else
{
lastTime = getTimer();
return;
}