PDA

Просмотр полной версии : цикл по mx:text


Brute Brainiac
20.09.2008, 22:37
Есть много текстовых полей.
<mx:Text id="a1" text="-"/>
<mx:Text id="a2" text="-"/>
<mx:Text id="a3" text="-"/>
<mx:Text id="a4" text="-"/>
...

Дан контент для каждого поля.
var aq_1="Текст 1";
var aq_2="Текст 2";
var aq_3="Текст 3";
var aq_4="Текст 4";
...

Как заполнить эти поля контентом с помощью for-a?

Пытался так:
for (var i:Number = 1; i <= 4; i++) {
['a'+i].text = ['aq_'+i];
};

Но ессесно ничего не вышло.

wvxvw
21.09.2008, 00:05
<?xml version="1.0"?>
<u:Main xmlns:u="*" xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">

<mx:Script>
<![CDATA[
import mx.controls.Text;

public var texts:Array = ["foo", "bar", "qwerty", "abcd"];
public function nextText(i:int):String { return texts[i]; }

public function resetFields():void
{
var i:int = numChildren + 1;
var tf:Text;
texts.reverse();
while (i--)
{
if (getChildAt(i) is Text)
{
tf = getChildAt(i) as Text;
texts.unshift(texts.pop());
tf.text = texts[0];
}
}
}

public function randomiseFields():void
{
var i:int = texts.length;
var tf:Text;
texts = randomiseArray(texts);
while (i--) (this["text" + i] as Text).text = texts[i];
}

private function randomiseArray(arr:Array):Array
{
var farr:Array = [];
var i:int = arr.length;
while (i--) farr.push(arr.splice(Math.random() * arr.length, 1)[0]);
return farr;
}
]]>

</mx:Script>
<mx:Button id="reversBTN" label="reverse texts" buttonDown="resetFields()" />
<mx:Button id="randomiseBTN" label="randomise texts" buttonDown="randomiseFields()" />
<mx:Text id="text0" text="{nextText(0)}" width="200" height="50"/>
<mx:Text id="text1" text="{nextText(1)}" width="200" height="50"/>
<mx:Text id="text2" text="{nextText(2)}" width="200" height="50"/>
<mx:Text id="text3" text="{nextText(3)}" width="200" height="50"/>
</u:Main>
А вообще, способов можно десятки придумать...

mitado
25.09.2008, 13:22
[Bindable] private var _textData:Array=["Текст 1", "Текста 2", ....];
...
<mx:Repeater id="textRep" dataProvider="{_textData}">
<mx:Text text="{textRep.currentItem}" width="200" height="50"/>
</mx:Repeater>