好的,我有一个与我的“onEnterFrameHandler”函数绑定的collisionTest函数。
所以要简化它的外观:
onEnterFrameHandler(e:Event):void{
testCollision();
}
testCollision():void{
trace("always running");
if(1_MC.hitTestObject(2_MC)){
//do stuff
}
}
问题是,它始终在运行。不断运行以测试碰撞。我觉得这可能导致this project的延迟。
您是否知道一种控制功能的好方法,该功能需要能够在任何时间检查事件,而在偶数未发生时不运行?
答案 0 :(得分:0)
很难回答这个问题,因为当你没有检查碰撞时,这个问题非常模糊。为了提高性能,它不是要改变碰撞测试方法,而是何时进行检查。
所以你可以通过简单地添加if语句来实现这一点:
if (doCollisionTest){testCollision();}
但是当doCollisionTest
为真或假时,这并不能解决,这是棘手的部分,无法从您提供的信息中回答。
答案 1 :(得分:0)
如果您不需要检查每一帧,您可以使用定时器只根据您的需要进行检查,例如,如果您认为它足够好每秒检查3次,您可以设置它像这样:
var timer:Timer = new Timer(333); //run 3 times a second
timer.addEventListneer(TimerEvent.TIMER, collisionTest, false, 0, true);
timer.start();
function collisionTest(e:Event = null):void {
//do you collision stuffs
}
然后,如果您出于某种原因暂时禁用它,请使用timer.stop()
,然后再次使用timer.start()
答案 2 :(得分:0)
通常,您总是在游戏循环中检查碰撞。您提供一个标记,指示是否需要检查某些内容。
在旁注中,考虑使用collision detection kit,我认为您会发现它可以解决您可能遇到的有关碰撞的所有情况。