好吧,我似乎无法解决这个问题。我是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循环遍历它们?
任何帮助将不胜感激,谢谢你!
答案 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并将其存储在数组中。在一个垂耳中,你将使用汽车实例从阵列中检查每一个。