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;
}

非常に単純なことはわかっていますが、私はこれに何年も取り組んできましたが、答えは見つかりませんでした

その瞬間、実行すると、1つのアイテムしか表示されず[object Object]、テキストの代わりに

編集: テキストの問題を修正するために配置する必要があることに気付きました_itemTextField.text = meatItems[i].label.toString();が、まだ 1 つのアイテムしか表示されません。ループの何が問題なのですか?

4

1 に答える 1

1

meatItems[0](例)は{label: "None", data: 0}。それはオブジェクトです。メソッドを使用してオブジェクトを文字列に変換すると、オブジェクトはその内容に関係なくtoStringとして表されます。[object Object]より有用な出力が必要な場合は、それを自分で作成する必要があります。

例えば:

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

[…] しかし、まだ 1 つのアイテムしか表示されません。ループの何が問題なのですか?

もう 1 つの問題は、配列をループして、テキスト フィールドの text プロパティを現在のアイテムに設定し続けることです。つまり、すべての反復で古い値を上書きし、最後の値のみが残ります。それらをすべてテキスト フィールド内に配置したい場合は、たとえば、新しいテキストを追加できます (ここでは、各項目の末尾にコンマを区切ります。つまり、最後に 1 つの末尾のコンマがあることを意味します)。剥がす):

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