检测数组中的影片剪辑内的对象与另一个对象数组之间的冲突

时间:2016-10-15 16:18:25

标签: arrays flash collision-detection movieclip actionscript-3

简单地说,

我随机放置并移动将会呼叫受害者的影片剪辑我还有另一组随机移动影片剪辑,这些剪辑具有攻击动画,我将其称为攻击者。

受害者随机时间随机徘徊在攻击者之间,攻击者将拍摄闪电影片以攻击受害者。正是在这一点上,我试图检查受害者和攻击者闪电螺栓之间的碰撞。

两种类型都在单独的数组中,我在检查数组与数组之前没有问题我还检查了静态对象与数组对象内部MC没有问题。但是,当检查数组与数组对象内部MC时,我会陷入困境。

代码:

for(var j:int=0;j<NormalBubbleArray.length;j++){

for(var k:int=0;k<LightningStormArray.length;k++){

if(NormalBubbleArray[j].hitTestObject(LightningStormArray[k]).upbolt){
trace("hit")

NormalBubbleArray.removeAt([j]);
LightningStormArray.removeAt([k]);

}
}
}

我也试过

 if(NormalBubbleArray[j].hitTestObject(LightningStormArray[k]).upbolt)

以及其他10种尝试编写它的方法。仍然没有运气不确定它是我的循环或碰撞检测此时。它在运行时没有出错,所以我假设我的语法没问题。 在此先感谢。

更新:我正在修补它,并意识到我把它包裹在try catch中,所以我没有看到错误。现在我的问题是这个。

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

for(var k = 0; k<LightningStormArray.length;k++){

     if((LightningStormArray[k]).upbolt hitTestPoint(NormalBubbleArray [j]), true){
trace("hit")
(NormalBubbleArray [j]).removeEventListener(MouseEvent.MOUSE_MOVE, ChildMouse);
NormalBubbleArray.removeAt([j]);
LightningStormArray.removeAt([k]);

}

}

}

仍在编译,但是当需要检测时,我会在输出中收到以下错误。

TypeError:错误#1006:value不是函数。 在BubblesReloaded_fla :: MainTimeline / CollisionControl()

帮助表示赞赏。我仍在修补它。

1 个答案:

答案 0 :(得分:0)

知道了!

整蛊魔鬼。

debuger一直指向最热门的线路,它与它所看到的实际线路无关,但是导致这个问题的if语句内部是什么。

var Lstormpoints:int = 0;
for(var j = 0; j<NormalBubbleArray.length;j++){
for(var k = 0; k<LightningStormArray.length;k++){
if(LightningStormArray[k].upbolt.hitTestPoint(NormalBubbleArray [j]), true){
trace("bubble is hit")
NormalBubbleArray [j].removeEventListener(MouseEvent.MOUSE_MOVE, ChildMouse);
NormalBubbleArray [j].gotoAndPlay(10)/// was (NormalBubbleArray [j]).gotoAndPlay(10) // was causing an error
NormalBubbleArray.removeAt([j]);
LightningStormArray.removeAt([k]);

}

}

} 

让我失望的是,调试器一直将if语句指向错误。我没有抓到的是它试图告诉我if语句中的错误。我经过一些沉重的追踪后才发现它我注意到它正在检测到碰撞,但是泡泡并没有表现得好像它被击中而给我的幻觉是它没有检测到撞击。 gotoAndPlay系列为死亡设置了动画,遗憾的是这就是问题所在......我很高兴我明白了。