好吧,所以我对AS3很新,我在游戏中有一个级别,你必须活着45秒。如果我使用类似的代码(或者如果有更好的代码,我将使用那个代码)
var myTimer:Timer = new Timer(1000, 1); // 1 second
myTimer.addEventListener(TimerEvent.TIMER, runOnce);
myTimer.start();
function runOnce(event:TimerEvent):void {
trace("runOnce() called @ " + getTimer() + " ms");
}
如果他们活着45秒,我如何使用它来让我的游戏移动到场景6?我还想在动画上显示文字,记录他们活着多久,以便他们知道他们已经离开多久。我怎么能做到这一点?
答案 0 :(得分:0)
private var startTime:int;
function startGame() {
// this is called when your game starts
startTime=getTimer();
... // rest of init code
}
function onEnterFrame(e:Event):void {
// main loop, whatever you need to do in here
currentTime=getTimer()-startTime; // here we receive the elapsed time
// pause handling is excluded from this example!!11
if (weAreDead()) {
survivalTime= currentTime;// here
...
} else if (currentTime>45000) {
//advance to scene 6 here
}
}
将Event.ENTER_FRAME的监听器设置为onEnterFrame
,通过设置存储的时间开始游戏,然后进行pwn。
答案 1 :(得分:0)
最简单的解决方案是继续使用计时器,但将值设置为45000并确保保留计时器的引用,否则将进行垃圾回收。另外,创建一个单独的函数,允许你从任何地方杀死计时器,如果这个特殊的东西需要“离开”而不完成。
public static const DELAY:int = 45;
private var _timer:Timer;
public function setTimer():void
{
_timer = new Timer( DELAY * 1000, 1 );
_timer.addEventListener( TimerEvent.TIMER_COMPLETE, timerCompleteHandler );
_timer.start();
}
private function timerCompleteHandler( event:TimerEvent ):void
{
disposeTimer();
goDoTheThingThatYouNeededToDo();
}
public function disposeTimer():void
{
_timer.stop();
_timer.removeEventListener( TimerEvent.TIMER_COMPLETE, timerCompleteHandler );
_timer = null;
}