0

当子弹击中 spartan 时,我在以下函数中收到类型错误(术语未定义且没有属性)

子弹是一个数组

spartans 是一个数组

这个函数基本上是移动子弹和斯巴达人,同时检查它们是否发生碰撞以及它们是否都被移除。

function loop(event:Event)
{
    for (var bcount=0; bcount < bullets.length; bcount++)
    {
        if (bullets[bcount].x <= 1055)
        {
            bullets[bcount].x = bullets[bcount].x + bulletSpeed;
        }
        else
        {
            removeChild(bullets[bcount])
            bullets.splice(bcount, 1)
            bcount--
        }
        
        for (var spcount=0; spcount<spartans.length; spcount++)
        {
            spartans[spcount].x = spartans[spcount].x - spartanSpeed
            if (bullets[bcount].hitTestObject(spartans[spcount]))
            {
                removeChild(spartans[bcount])
                spartans.splice(spcount, 1)
                spcount--
                removeChild(bullets[bcount])
                bullets.splice(bcount, 1)
                bcount--

            }
        }
    }


}
4

1 回答 1

0

第一的

在第二个循环中,我认为您想删除 spartans[spcount]

所以改变这一行

 removeChild(spartans[bcount])

  removeChild(spartans[spcount])

第二

在第二个循环中,您应该检查 bcount 是否小于零。因为在第一个循环和第二个循环中,你们都减少了 bcount,所以 bcount 可能是 -1。

例如,bulls[0]'sx 大于 1055,因此 bcount 为 -1。如果这没有发生,在第二个循环中,如果冲突在某些时候发生,bcount 将小于 0。

于 2013-08-20T12:44:06.743 回答