0

即使我知道这很简单,我也坚持这样做。然而,我遇到了错误。

我有的:

我有 3 个数组。

  1. 第一个数组包含UpgradeButton类的对象。
  2. 第二个数组包含BuyButton类的对象。
  3. 命名的第三个数组newCostlyShops包含数字。

BuyButtonclass 和UpgradeButtonclass 都有一个shopCode成员,它是一个数字;我试图等同的数字。

我正在尝试做的事情:

我的目标是首先在各个数组中查找BuyButton与.UpgradeButtonshopCodenewCostlyShops

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

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

我在做什么有问题吗?如何避免这个错误?这使整个程序陷入混乱。如果此方法还有其他替代方法,我愿意采用这些方法,只要我没有出错并且达到我的目标。

4

1 回答 1

0

听起来可能很有趣,但是....looper拼接后尝试递减。

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

我认为在拼接数组后,所有项目都在移动,而你正在跳过下一个。

此外,您应该获得有关此错误的更多信息,例如抛出它的类/行。也许您需要启用“允许调试”之类的?

额外建议:newCostlyShops使用Dictionary而不是Array,因此您不必嵌套 for inside for...

于 2015-06-09T18:03:44.910 回答