0

我有一个看起来像这样的数组:

public var meatItems:Array = [{label: "None", data: 0},
                              {label: "Chicken", data: 1},
                              {label:"Beef", data: 2},
                              {label: "Ham", data: 3},
                              {label: "Lamb", data: 4},
                              {label: "Pork", data: 5},
                              {label: "Sausages", data: 6},
                              {label: "Venison", data: 7},
                              {label: "Turkey", data: 8},
                              {label: "Duck", data: 9},
                              {label: "Fish", data: 10}];

我想遍历这个数组中的每个项目,并通过用该特定项目填充 TextField 的 .text 属性将其插入到滚动列表中。

var i:Number;
for (i=0;  i < meatItems.length; i++) {
    itemTextField.text = meatItems[i].toString();
    _item = new Item();
    _item.addChild(_itemTextField);
    _item.y = i * _itemPosition;
}

我知道很简单,但我一直在研究这个问题,但没有找到任何答案

此刻,当我运行它时,它只显示一个项目,它说[object Object]而不是文本

编辑:我意识到我需要_itemTextField.text = meatItems[i].label.toString();解决文本问题,但它仍然只显示一个项目,我的循环有什么问题?

4

1 回答 1

1

meatItems[0](例如)是{label: "None", data: 0}。那是一个对象。使用该方法将对象转换为字符串时,无论其内容如何toString,​​对象都表示为。[object Object]如果你想要一个更有用的输出,你需要自己构建它。

例如:

_itemTextField.text = meatItems[i].label + '(' + meatItems[i].data + ')';

[...] 但它仍然只显示一项,我的循环有什么问题?

另一个问题是您遍历数组,并不断将文本字段的文本属性设置为当前项目。这意味着您在每次迭代中都会覆盖旧值,并且只保留最后一个值。如果您想将它们全部放在文本字段中,您可以例如附加新文本(这里在每个项目的末尾用逗号分隔 - 这意味着最后会有一个尾随逗号,您可能想要剥离):

_itemTextField.text += meatItems[i].label +  ', ';
于 2013-04-22T19:40:38.090 回答