这是碰撞
if(blue2.hitTestObject(_helicopter))
{
trace("YOU HIT THE BLOCK!");
ihit = true;
_helicopter.x = 76;
_helicopter.y = 217;
}
是否可以在碰撞代码中添加暂停功能^?是这样,我在那里写什么?谢谢!
答案 0 :(得分: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.");
}