【发布时间】:2017-02-24 23:06:13
【问题描述】:
简单地说,
我有随机放置和移动的影片剪辑,它们会呼叫受害者并且我有另一组随机移动的影片剪辑,它们有一个攻击动画,我将它们称为攻击者。
受害者在攻击者之间随机游荡,攻击者会随机射出闪电电影剪辑来攻击受害者。正是在这一点上,我试图检查受害者和袭击者闪电之间的碰撞。
这两种类型都在单独的数组中,我之前检查过数组与数组没有问题我还检查了静态对象与数组对象内部 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:值不是函数。 在 BubblesReloaded_fla::MainTimeline/CollisionControl()
感谢您的帮助..我仍在修补它。
【问题讨论】:
标签: arrays flash collision-detection movieclip actionscript-3