Flash hitTestObject的问题
我正在为我的角色编写HitTestObject: (每个代码都位于ENTERFRAME部分) -对于角色:Flash hitTestObject的问题,flash,actionscript-3,Flash,Actionscript 3,我正在为我的角色编写HitTestObject: (每个代码都位于ENTERFRAME部分) -对于角色: if(bullet.bulletList.length>0) for (var i:int = 0; i < bullet.bulletList.length; i++) { if(this.hitTestObject(bullet.bulletList[i])) { updateHP();
if(bullet.bulletList.length>0)
for (var i:int = 0; i < bullet.bulletList.length; i++)
{ if(this.hitTestObject(bullet.bulletList[i]))
{
updateHP();
}
}
一开始阶段中没有项目符号时,不会产生错误,但当第一个项目符号将子项添加到阶段时,出现如下错误:
TypeError: Error #2007: 参数 hitTestObject 不能为空。(something's like hisTestOject cannot be empty)
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at com.miraclei::char/loop()
我认为这是因为当第一个项目符号从stage移除时,hitTestObject函数在项目符号列表中找不到任何内容,然后发生了错误。我试了很多方法,但还是不行!
有人对此有解决方案吗?如果我读对了,诀窍是按数字降序遍历您的项目符号数组:
for (var i:int = bullet.bulletList.length-1; i > -1; i-- )
{ etc..
这样就不会遇到空数组位置
希望这有帮助 我建议您使用这个开源库进行冲突检测:问题可能是因为在删除项目符号时,留下了空的数组位置。但是,您还没有发布如何删除子弹的代码,因此我们无法真正确定。
for (var i:int = bullet.bulletList.length-1; i > -1; i-- )
{ etc..