AS 3.0停止计时器

时间:2012-02-06 14:49:48

标签: actionscript-3 timer

嗨我需要帮助来停止使用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;
            }

        }

1 个答案:

答案 0 :(得分:1)

这是一个简单的解决方案,但我认为您应该了解时间步是什么,这是游戏编程的一个关键概念,请参阅Fix Your Timestep!

if (!MovieClip(parent).pauseGame) {
    //get time passed
    timePassed = getTimer() - lastTime;
    lastTime += timePassed;
}
else
{
    lastTime = getTimer();
    return;
}