actionscript 3-使用removeChild()并访问数组成员时出错



我一直在做这件事,尽管我知道它很简单。然而,我还是犯了错误。

我所拥有的:

我有3个数组。

  1. 1st Array包含UpgradeButton类的对象
  2. 2nd Array包含BuyButton类的对象
  3. 名为newCostlyShops的第三个数组包含数字

BuyButton类和UpgradeButton类都具有作为数字的shopCode成员;我试图将其等同起来的数字。

我要做的事情:

我的目标是首先在相应的数组中查找BuyButtonUpgradeButton对象,这些对象的shopCodenewCostlyShops中的对象相同。

之后,我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:术语未定义且没有属性。

此错误仅在第一次运行此代码之后出现,而不是在第一次执行时出现。当我删除removeChildsplice时,这将跟踪而不是null的对象。即使整个函数被调用了100次,也不会显示错误。只有当我removeChild和使用splice时,才会发生这种情况。

我做的事情有什么问题吗?如何避免这个错误?这把整个计划搞得一团糟。如果这种方法还有其他选择,我也愿意采用这些方法,只要我没有出现错误,并且我的目标已经实现。

这听起来可能很有趣,但。。。。尝试在剪接后递减CCD_ 17。

  trace(looper);
  trace(upgradeButtonsArray[looper]);
  removeChild(upgradeButtonsArray[looper]);
  upgradeButtonsArray.splice(looper, 1);
  looper--;

我认为在拼接数组后,所有项目的都会被移动,而您将跳过下一个。

此外,你应该得到更多关于这个错误的信息,比如哪个类/行抛出了它。也许你需要启用"允许调试"之类的功能?

奖金建议:对于newCostlyShops,请使用Dictionary而不是Array,这样您就不必在内部嵌套。。。

最新更新