var lastRecordedTime:Number = getTimer();
while(getTimer()>lastRecordedTime+10000)
{
}
我想让我的游戏处于等待状态。我应该像这样使用while循环还是有更高效的方法呢?
答案 0 :(得分: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
}
唯一的问题是它是异步的,所以你可能需要添加一些特殊的逻辑来同时忽略某些类型的事件和事物,这取决于你想要完成的事情。但是使用while循环来休眠线程在AS3中无法解决。