0
var lastRecordedTime:Number = getTimer();
while(getTimer()>lastRecordedTime+10000)
{

}

我想让我的游戏进入等待状态。我应该像这样使用while循环还是有更高效的方法来做到这一点?

4

1 回答 1

6

永远不要在 AS3 中使用这样的方法。AS3 有一个严重的缺点,它不支持多线程。只要该计时器继续运行,这就会使程序完全崩溃,如果用户一直试图单击它或其他什么东西,Windows 7 尤其会崩溃。

试试这个:

private var m_tmr:Timer = new Timer(10000, 1);

.
.
.

private function func():void
{
    .
    .
    .
    m_tmr.addEventListener(TimerEvent.TIMER, tick);
    m_tmr.start();
}

private function tick(pEvent:TimerEvent):void
{
    // pick back up in here
}

唯一的问题是它是异步的,因此您可能需要添加一些特殊的逻辑来同时忽略某些类型的事件和内容,具体取决于您要完成的任务。但是在 AS3 中使用 while 循环让线程休眠是行不通的。

于 2013-02-26T22:53:17.710 回答