hitTestObject的问题

时间:2011-07-08 09:34:16

标签: 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();
                        }
             }

- 用于能量攻击代码:

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中找不到任何内容时,就会发生错误。我尝试了很多方法,但还是不行! 有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果我正确读到这个,那么诀窍就是按照数字顺序迭代你的子弹阵列:

for (var i:int = bullet.bulletList.length-1; i > -1; i-- )
{   etc..

你不会以这种方式遇到空数组位置。

希望这有帮助!