2014-12-05 56 views
0

这两个循环,我打算使用1得分和1来移除生命,导致AS3错误#1010,“一个术语是未定义的,没有任何属性”,但是我在我的构造函数代码中定义了两个数组并在for循环中定义for循环变量。 尽管在主函数中做了一些事情,但它并没有成为第二个循环。任何帮助?AS3错误1010,变量声明和属性通用?

    for (var iPlus = 0; iPlus <= objectArrayPlus.length; iPlus++) 
       { 
        if (objectArrayPlus[iPlus].y >= 400) 
        { 
         removeChild(objectArrayPlus[iPlus]); 
         objectArrayPlus.splice(iPlus, 1); 
        } 
        else if (gameBoat.hitTestObject(objectArrayPlus[iPlus])) 
        { 
         trace("this will score"); 
        } 
       } 
       for (var iMinus:int = 0; iMinus <= objectArrayMinus.length; iMinus++) 
       { 
        trace ("for loop entered"); 
        if (objectArrayMinus[iMinus].y >= 150) 
        { 
         removeChild(objectArrayMinus[iMinus]); 
         objectArrayMinus.splice(iMinus, 1); 
        } 
       } 

回答

1

尝试<而不是<=for循环:

for (var iPlus:int = 0; iPlus < objectArrayPlus.length; iPlus++) { 

    ... 

} 

for (var iMinus:int = 0; iMinus < objectArrayMinus.length; iMinus++) { 

    ... 

} 
+0

这就是它,现在看起来很明显,但是对于所有与我具有相同问题的人来说 - 数组长度将是数组中所有元素的数量,但由于数组索引从0开始到达一个迭代,没有数组元素并停止。谢谢akmozo – QUstudent 2014-12-05 03:17:05

0

至少为何第二循环被跳过的原因一个可能的原因是您的阵列中的一个或两个是空的。我不知道,因为我不知道那些数组是什么,但如果他们在这些数组中没有术语,那么这可能是问题的一部分。同样,如果能够显示那些变量/列表的定义和添加位置,可能会提供更多帮助,这将对您有所帮助。

+0

我跟踪函数中的数组长度来检查它们,并且它们都包含元素,推送和拼接删除似乎在第一次正常工作,并且我知道推动在第二次正常工作,它不是' t实际上是进入第二个循环 – QUstudent 2014-12-05 03:15:24

+0

您可以添加更多代码,以便我们可以在上下文中看到循环吗? – Trex 2014-12-05 03:17:08