我一直在做这件事,尽管我知道它很简单。然而,我还是犯了错误。
我所拥有的:
我有3个数组。
-
1st Array包含
UpgradeButton
类的对象 -
2nd Array包含
BuyButton
类的对象 -
名为
newCostlyShops
的第三个数组包含数字
BuyButton
类和UpgradeButton
类都具有作为数字的shopCode
成员;我试图将其等同起来的数字。
我要做的事情:
我的目标是首先在相应的数组中查找BuyButton
和UpgradeButton
对象,这些对象的shopCode
与newCostlyShops
中的对象相同。
之后,我removeChild()
那个对象和splice
它从数组中出来。
我的代码:
阵列3:
var newCostlyShops:Array = new Array();
newCostlyShops = Object(root).WorkScreen_mc.returnCostlyShops();
trace(newCostlyShops); // this is tracing out the exact shopCodes I want and is working fine.
删除和拼接代码:
for (looper = 0; looper < upgradeButtonsArray.length; looper++) {
for (var secondLooper: int = 0; secondLooper < newCostlyShops.length; secondLooper++) {
if (upgradeButtonsArray[looper].shopCode == newCostlyShops[secondLooper]) {
trace(looper);
trace(upgradeButtonsArray[looper]);
removeChild(upgradeButtonsArray[looper]);
upgradeButtonsArray.splice(looper, 1);
}
}
}
for (looper = 0; looper < buyButtonsArray.length; looper++) {
for (secondLooper = 0; secondLooper < newCostlyShops.length; secondLooper++) {
if (buyButtonsArray[looper].shopCode == newCostlyShops[secondLooper]) {
trace(looper);
trace(buyButtonsArray[looper]);
removeChild(buyButtonsArray[looper]);
buyButtonsArray.splice(looper, 1);
}
}
}
此代码有什么问题:
我不断收到错误
TypeError:错误#1010:术语未定义且没有属性。
此错误仅在第一次运行此代码之后出现,而不是在第一次执行时出现。当我删除removeChild
和splice
时,这将跟踪而不是null的对象。即使整个函数被调用了100次,也不会显示错误。只有当我removeChild
和使用splice
时,才会发生这种情况。
我做的事情有什么问题吗?如何避免这个错误?这把整个计划搞得一团糟。如果这种方法还有其他选择,我也愿意采用这些方法,只要我没有出现错误,并且我的目标已经实现。
这听起来可能很有趣,但。。。。尝试在剪接后递减CCD_ 17。
trace(looper);
trace(upgradeButtonsArray[looper]);
removeChild(upgradeButtonsArray[looper]);
upgradeButtonsArray.splice(looper, 1);
looper--;
我认为在拼接数组后,所有项目的都会被移动,而您将跳过下一个。
此外,你应该得到更多关于这个错误的信息,比如哪个类/行抛出了它。也许你需要启用"允许调试"之类的功能?
奖金建议:对于newCostlyShops
,请使用Dictionary而不是Array,这样您就不必在内部嵌套。。。