0

这是碰撞

   if(blue2.hitTestObject(_helicopter))

            {
                trace("YOU HIT THE BLOCK!");
                ihit = true;
                _helicopter.x = 76;
                _helicopter.y = 217;
            }

是否可以在该碰撞代码中添加暂停功能^?是这样,请问我在那里写什么?谢谢!

4

1 回答 1

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.");
}
于 2012-04-05T20:22:18.837 回答