2013-02-26 136 views
0
var lastRecordedTime:Number = getTimer(); 
while(getTimer()>lastRecordedTime+10000) 
{ 

} 

我想让我的游戏处于等待状态。我应该像这样使用while循环,还是有更高性能的方式来执行此操作?使用while循环等待?

+0

您标记为Java,但此代码看起来不像Java。 – rgettman 2013-02-26 22:43:46

+0

@rgettman Java与AS3非常相似,而Java中的循环应该相同,对吧? – 2013-02-26 22:44:30

+1

从语言到语言,循环可以非常相似,但是例如Java具有'Thread.sleep'来等待特定数量的毫秒而没有while循环。 – rgettman 2013-02-26 22:45:40

回答

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中发挥作用。

+1

我同意w /答案,但也许“thrashes”是单词的更好选择,而不是“崩溃”;)因为我们在Flash中编写的代码是单线程的(除了新的Actionscript工作者),while循环将只是绑定唯一的线程,并应该让所有浏览器最终抱怨,如果它被绑得太久。 – 2013-02-26 23:23:33