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
}

これに関する唯一のことは、非同期であるため、何を達成しようとしているかに応じて、その間に特定のタイプのイベントやものを無視するために特別なロジックを追加する必要がある場合があります。ただし、while ループを使用してスレッドをスリープ状態にするだけでは、AS3 ではうまくいきません。

于 2013-02-26T22:53:17.710 に答える