Flex:在其他函数中访问动态添加的RicheEditableText

时间:2011-10-19 19:58:06

标签: flex adobe mxml red5

当我点击用户列表时,会触发函数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 :(得分:0)

要为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。

或者,如果您想在添加到标签后立即访问,请从addtab函数返回RichEditableText。

答案 1 :(得分:0)

阐述我的评论,我的想法是你做这样的事情:

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)

如果没有看到更多的代码,我不知道这是否是最好的解决方法,但如果你想用一些动态生成的名称标记你的盒子并稍后查找它,这将有效

Example documentation

相关问题