2013-08-20 44 views
0

我得到一个类型的错误中取出时类型错误(术语是不确定的,没有属性)在以下功能时,子弹击中了斯巴达移除一个孩子,从一个数组

子弹是一个数组

斯巴达是一个数组

和该函数基本上移动子弹和斯巴达同时检查如果它们被碰撞,如果他们是都除去。

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-- 

      } 
     } 
    } 


} 
+0

您在哪里定义数组?在为循环函数添加事件侦听器之前或之后? – putvande

回答

0

首先

在第二循环中,我认为要删除斯巴达[spcount]

因此改变这一行

removeChild(spartans[bcount]) 

removeChild(spartans[spcount]) 

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

例如,项目符号[0]的x大于1055,所以bcount将为-1。如果没有发生,在第二个循环中,如果碰撞发生在某些时候,bcount将小于0.

相关问题