0

我正在尝试在 flex 3 中实现可重用组件。我有一个动态的选项卡导航器。在屏幕上,我有一个带有单击操作的按钮,一个带有 vbox 的选项卡导航器将被创建为子级,在 vbox 中我有一个接受输入的文本框来自用户的信息。

我在点击按钮旁边有一个显示按钮。当用户单击显示按钮并且打开四个选项卡时,我们需要将 VBox 的所有文本框放入文本区域。

这是我的代码。

 <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">


    <mx:Script>
        <![CDATA[
            import Repeat;
    private var input:String;

    private var i:int=0;
            private function addNextTab(event:Event):void {
                tabs.addChild(new Repeat("Tab"));
            }
            private function show()
            {

                var child:DisplayObject;

            for(i=0;i<tabs.numChildren;i++)
            {


      child=tabs.getChildAt(i);
              input=TextInput(child.getChildAt(0)).text;//error
              textArea.text=textArea.text+input;
            }
            }
        ]]>
    </mx:Script>
    <mx:TabNavigator id="tabs" width="100%" height="100%">

    </mx:TabNavigator>

        <mx:TextArea id="textArea"/>
    <mx:Button label="Add Next Tab" click="addNextTab(event)" />
    <mx:Button label="Show Values" click="show()" />

    </mx:Application>

一行显示错误。我是 flex 的初始学习者。但我试着学习并做我自己的。这是我的Repeat.as

package {
import mx.containers.VBox;
import mx.controls.Label;
import mx.controls.TextInput;

public class Repeat extends VBox {
    public function Repeat(name:String) {
        label = name;


    }

    override protected function createChildren():void {
        super.createChildren();

        var box:VBox = new VBox();
        var t1:TextInput = new TextInput();

        box.addChild(t1);

        addChild(box);
    }
}
}

我必须访问所有选项卡的文本框信息并将其放在 textArea 中。

有谁能够帮助我。?

顺便说一句:这是 flex 3 应用程序。

4

1 回答 1

1

您应该使文本成为公共属性,并且不要创建嵌套的 VBox 来添加它。您已经在扩展 VBox,所以只需 addChild.. 像这样:

package {
    import mx.containers.VBox;
    import mx.controls.Label;
    import mx.controls.TextInput;

    public class Repeat extends VBox {

        public var text:TextInput;

        public function Repeat(name:String) {
            label = name;
        }

        override protected function createChildren():void {
            super.createChildren();
            text = new TextInput();
            addChild(text);
        }
    }
}

编辑:显示以访问它。

child = tabs.getChildAt(i) as Repeat;
child.text.text = someNewValue;
于 2012-12-15T19:38:52.273 回答