我可以检查一个对象是否正在引发另一个对象,但如果我有10个MovieClip对象,我想检查是否有任何对象正在查找任何对象:
package {
import flash.display.MovieClip;
import flashx.textLayout.events.DamageEvent;
import fl.motion.Animator;
import flash.geom.Point;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
import flash.geom.ColorTransform;
public class Test extends MovieClip {
private var arrows:Array;
private var timer:Timer;
public function Test() {
init();
}
private function init():void {
timer = new Timer(1000, 6);
timer.addEventListener(TimerEvent.TIMER, timerEvent);
arrows = new Array();
timer.start();
}
private function timerEvent(e:TimerEvent):void{
var arrow:Arrow = new Arrow();
arrow.x = 5;
arrow.y = Math.random() * 200 + 10;
addChild(arrow);
arrow.addEventListener(Event.ENTER_FRAME, onEnterFrame);
arrows.push(arrow);
//trace(555);
}
private function onEnterFrame(e:Event):void{
e.target.x += 4;
if(e.target.x > 400)
{
e.target.transform.colorTransform = new ColorTransform(0, 0, 1, 1, 0, 0, 1, 1);
e.target.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
e.target.addEventListener(Event.ENTER_FRAME, goBack);
}
}
private function goBack(e:Event):void {
e.target.x -= 4;
if(e.target.x < 50)
{
e.target.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 1, 1);
e.target.removeEventListener(Event.ENTER_FRAME, goBack);
e.target.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}
}
我如何检查是否有任何箭头触及其他箭头对象?,无论什么对象都无关紧要,我需要像hitTestGlobal这样的东西
答案 0 :(得分:2)
至少你可以使用方法DisplayObjectContainer.getObjectsUnderPoint(point:Point)来攻击一个点。如果您的主要对象的边界没有改变,您可以预定义测试每个EnterFrame事件的边缘点。
答案 1 :(得分:1)
是。您必须检查所需的每个对象的命中测试。是的,这是一个很好的操作,但是在编写游戏时,没有其他的解决方法。尝试使用Vector
代替Array
以获得一点性能提升,因为Vector
是类型相关的数组,并且它使用更少的内存。您可以检查语法HERE。
您可以像这样实例化它:
private var arrows:Vector.<Arrow> = new Vector.<Arrow>();