暂停在您的上下文中有点难以解释。
例如,如果您的游戏有一个进入帧处理程序,您可以停止所有游戏动画一段时间。或者,也许你想冻结一个“你成功了!” 消息一段时间,而背景动画仍在运行。
一种方法是使用计时器。它是异步的,但这里的最终结果是在一段时间(毫秒)后调用一个函数。
在此示例中,代码执行 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.");
}