Using a loop to assign labels won't work in Actionscript 3. TypeError: Error #1010

Using a loop to assign labels won't work in Actionscript 3. TypeError: Error #1010

我使用这个网站做了很多事情,发现了很多有用的信息,这些信息主要帮助我创建了一个随机测验。我试图使代码尽可能高效,这导致我出现了这个错误。

我创建了一个数组,它使用 .push 函数将舞台上的现有按钮存储到数组中以备将来使用。下面显示的代码正确设置了每个按钮的标签。

_buttons[0].label = xmlData.difficulty1.questions[num2].op1.text();
_buttons[1].label = xmlData.difficulty1.questions[num2].op2.text();
_buttons[2].label = xmlData.difficulty1.questions[num2].op3.text();
_buttons[3].label = xmlData.difficulty1.questions[num2].op4.text();

所以我很自然地想让它更有效率一点,并将它们放在一个循环中。根据逻辑,这应该有效但无效。

for (var i:Number = 0; i < 4; i++)
{
    _buttons[i].label = xmlData.difficulty1.questions[num2].op[i+1].text();
}

此代码应简单地增加 _buttons 的数组计数器并为每个按钮设置标签。我的意思是它只是 for 循环中的第一组代码,对吗?但是,当我 运行 它时,出现以下错误:TypeError: Error #1010: A term is undefined and has no properties.

现在我确信第一组代码可以正常工作,因为我已经反复测试过它,但是当我决定将它放入那个 for 循环时,它就失败了。谁能解释为什么?也许这是语言本身的限制?也许我缺少命令?

尝试:

for (var i:Number = 0; i < 4; i++)
{
    _buttons[i].label = xmlData.difficulty1.questions[num2]['op'+(i+1)].text();
}

.op[i+1] 尝试在名为 op 而不是 op1

的字段下访问名为 1 的 属性