如何使用同一类的多个对象HitTestObject?

时间:2015-07-22 02:50:37

标签: actionscript-3 for-loop flash-cs6 flashdevelop displayobject

好吧,我似乎无法解决这个问题。我是displayObjectContainer的新手,根据我的阅读,我想我可能需要访问它才能检查HitTestObject。

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

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

但是因为有多个"灌木"添加到我的mcMainScreen影片剪辑的舞台上,它只跟踪其中一个灌木丛而不是所有灌木丛的hitTest。所以我知道我需要将它们添加到数组中并使用for循环遍历所有"灌木丛"但是我正确地做了很多麻烦。有没有办法让我不必给它们实例名称,并且可以为hitTes循环遍历它们?

任何帮助将不胜感激,谢谢你!

1 个答案:

答案 0 :(得分:3)

最好的方法是将灌木丛添加到阵列中。

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");
      }

   }
}

逻辑是,您需要创建bush并将其存储在数组中。在一个垂耳中,你将使用汽车实例从阵列中检查每一个。