我正在为我的角色写HitTestObject: (每个代码都在ENTERFRAME部分)
- 为角色:
if(bullet.bulletList.length>0)
for (var i:int = 0; i < bullet.bulletList.length; i++)
{ if(this.hitTestObject(bullet.bulletList[i]))
{
updateHP();
}
}
- 用于能量攻击代码:
bullet= new Bullet();
bulletList.push(bullet);
在舞台上没有子弹的开始时,没有出现错误,但是当第一个子弹addchild进入舞台时,出现了这样的错误:
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()
我认为这是因为当第一个项目符号removeFromStage,hitTestObject函数在bulletList中找不到任何内容时,就会发生错误。我尝试了很多方法,但还是不行! 有人有解决方案吗?
答案 0 :(得分:1)
如果我正确读到这个,那么诀窍就是按照数字顺序迭代你的子弹阵列:
for (var i:int = bullet.bulletList.length-1; i > -1; i-- )
{ etc..
你不会以这种方式遇到空数组位置。
希望这有帮助!