如何使用相同 Class 的多个对象来 HitTestObject?

How to HitTestObject with Multiple Objects of Same Class?

好吧,我好像想不通。我是 displayObjectContainer 的新手,根据我的阅读,我认为我可能需要访问它以检查 HitTestObject。

所以我有一个叫做 mcCar 的 class 和另一个叫做 mcMainScreen 的 class,我通过我的主引擎给它取了一个名字 "mainScreen" class 像这样 private var mainScreen:mcMainScreen; 我正在使用 Flash Develop 进行所有编码。现在,在 class mcMainScreen 中,我向其中添加了一个影片剪辑对象,我刚刚将其命名为 "bushes" 但是我在 mcMainScreen class 上添加了很多Flash CS6 只是视觉效果,没有代码或任何东西。现在通常我会给灌木丛一个实例名称并说:

if (mainScreen.bushes.hitTestObject(car))
{
   trace("HIT");
}

但是由于 "bushes" 的多个实例被添加到我的 mcMainScreen 影片剪辑的舞台上,所以它只跟踪其中一个灌木丛的 hitTest,而不是所有灌木丛。所以我知道我需要将它们添加到数组中并使用 for 循环遍历所有 "bushes" 但我在正确执行此操作时遇到了很多麻烦。有没有一种方法,我不必给它们实例名称,就可以为 hitTes 遍历它们?

任何帮助将不胜感激提前谢谢!

最好的方法是将灌木丛添加到数组中。

var bushArr:Array = new Array();
for(var i=0; i<mainScreen.numChildren; i++){
  var bush = getChildAt(i) as Bush;
  bushArr.push(bush);

}
this.addEventListener(Event.ENTER_FRAME, onLoop);
function onLoop(evt:Event){

   for(var j=0;j<bushArr.length;J++){

      var bush:Bush = bushArr[j] as Bush;

      if (bush.hitTestObject(car))
      {
         trace("HIT");
      }

   }
}

逻辑是,您需要创建灌木并将其存储在数组中。在 lop 中,您将使用 car 实例检查数组中的每一个。