一時停止は、コンテキストで解釈するのが少し難しいです。
たとえば、ゲームにフレーム ハンドラーがある場合、すべてのゲーム アニメーションを一定期間停止できます。または、「あなたはブロックを打った!」をフリーズしたいかもしれません。バックグラウンドアニメーションがまだ実行されている間、メッセージが一定期間表示されます。
1 つの方法は、タイマーを使用することです。非同期ですが、ここでの最終結果は、関数が一定時間 (ミリ秒) 後に呼び出されることです。
この例では、コードが実行されてから 5 秒後に、無名関数が時間切れであると応答します。
// needed imports:
import flash.events.TimerEvent;
import flash.utils.Timer;
if (blue2.hitTestObject(_helicopter))
{
trace("YOU HIT THE BLOCK!");
ihit = true;
_helicopter.x = 76;
_helicopter.y = 217;
var timer:Timer = new Timer(5000); // 5-seconds
timer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void
{
timer.reset();
timer.removeEventListener(TimerEvent.TIMER, arguments.callee);
trace("5-seconds after hitting the block.");
});
timer.start();
}
無名関数が気に入らない場合は、次のように実装できます。
// needed imports:
import flash.events.TimerEvent;
import flash.utils.Timer;
if (blue2.hitTestObject(_helicopter))
{
trace("YOU HIT THE BLOCK!");
ihit = true;
_helicopter.x = 76;
_helicopter.y = 217;
var timer:Timer = new Timer(5000); // 5-seconds
timer.addEventListener(TimerEvent.TIMER, collisionWaitHandler);
timer.start();
}
// ... later in its own function:
protected function collisionWaitHandler(event:TimerEvent):void
{
var timer:Timer = Timer(event.currentTarget);
timer.reset();
timer.removeEventListener(TimerEvent.TIMER, collisionWaitHandler);
trace("5-seconds after hitting the block.");
}