Flex: доступ к динамически добавленному RicheEditableText в другой функции - PullRequest
0 голосов
/ 19 октября 2011

Когда я нажимаю на список пользователей, срабатывает функция addTab:

private var counter:int = 0;

public function addTab():void {
    var new vBox:VBox = new VBox();
    var textBox:RichEditableText = new RichEditableText();
    var nameEm:String = "dynamicTextBox" + counter;
    textBox.id = nameEm;
    counter++;
    var textFlow:TextFlow = new TextFlow();
    vbox.addChild(textFlow);
    vbox.addChild(textBox);
    tabNavigator.add(vBox);
}

В другой функции я хотел бы добавить Rich Text во вновь созданный TextBox, но я не могу получить к нему доступ.

Я пробовал getChildByName(vbox) и vbox.getChildByName(textBox), но, похоже, это не сработало.

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Прорабатывая мой комментарий, идея заключается в том, что вы делаете что-то вроде этого:

private var counter:int = 0;

public function addTab():void {
    var new vBox:VBox = new VBox();
    vBox.name = "dynVbox" + counter;
    var textBox:RichEditableText = new RichEditableText();
    textBox.name = "dynamicTextBox" + counter;

    var textFlow:TextFlow = new TextFlow();
    textFlow.name = "dynamicTextFlow" + counter;
    vbox.addChild(textFlow);
    vbox.addChild(textBox);
    tabNavigator.add(vBox);
    counter++;
}

Теперь, вне этой функции, вам просто нужно знать номер счетчика vBox, который вы хотите.Так, например:

var myBox = tabNavigator.getChildByName('dynVbox'+ 32).getChildByName('dynamicTextBox'+32)

Не видя больше вашего кода, я не знаю, является ли это лучшим способом для этого, но если вы хотите пометить свои поля некоторым динамически генерируемым именем ипосмотрите их позже, это будет работать

Пример документации

0 голосов
/ 20 октября 2011

Чтобы для childbyname присваивалось имя для произвольного текста, а если вы хотите получить его по счетчику, то также присвойте имя vbox, как в следующем примере:

private var counter:int = 0;

public function addTab():void {
    var new vBox:VBox = new VBox();
    var textBox:RichEditableText = new RichEditableText();
    var nameEm:String = "dynamicTextBox" + counter;
    textBox.id = nameEm;
    vBox.name=nameEm;
    textBox.name=nameEm;
    counter++;
    var textFlow:TextFlow = new TextFlow();
    vbox.addChild(textFlow);
    vbox.addChild(textBox);
    tabNavigator.add(vBox);
}

Если вы знаете индекс, тогда

var vb:VBox = tabNavigator.getChildByName("dynamicTextBox"+index) as VBox;
var txt:RichEditableText=vb.getChildByName("dynamicTextBox"+index) as VBox;

Так что это даст вам RichEditableText.

Или, если вы хотите получить доступ сразу после добавления на вкладку, верните RichEditableText из функции addtab.

...