Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在flex中实现可重用组件_Apache Flex_Actionscript - Fatal编程技术网

Apache flex 在flex中实现可重用组件

Apache flex 在flex中实现可重用组件,apache-flex,actionscript,Apache Flex,Actionscript,我试图在Flex3中实现可重用组件。我有一个选项卡导航器,它是动态的。在屏幕上我有一个带有点击操作的按钮,将创建一个带有vbox作为子项的选项卡导航器,在vbox中我有一个文本框,它接收用户输入的信息 我在单击按钮旁边有一个显示按钮。当用户单击“显示”按钮时,如果四个选项卡打开,我们需要将VBox的所有文本框放入文本区域 这是我的密码 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="ht

我试图在Flex3中实现可重用组件。我有一个选项卡导航器,它是动态的。在屏幕上我有一个带有点击操作的按钮,将创建一个带有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>
我必须访问所有选项卡的文本框信息并将其放入文本区域

有人能帮我吗


顺便说一句:它是Flex3应用程序。

您应该将文本设置为公共属性,而不要创建嵌套的VBox将其添加到其中。您已经在扩展VBox,所以只需添加child。。像这样:

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;

这是说错误,访问未定义的属性子项..也就是说,当我们将文本作为公共变量时,它会对可重用性产生任何影响。如果你看到我的程序,它会一次又一次地生成相同的组件,当用户单击“显示”按钮时,它会迭代地将所有可重用到组件的文本值添加到textArea。它将完全按照你的要求工作。错误是因为您设置了-var子项:DisplayObject;然后使用我给您的代码child=tabs.getChildAt(I)作为重复;您需要设置:var child:Repeat;可重用性是正确的。每次调用newrepeat(“Tab”)都会创建一个单独的Repeat对象,该对象有自己的文本输入,称为text。这就是为什么每个按钮都有标签。带有公共var标签的一个按钮类(不完全相同,但点相同)。。。尽可能多的新按钮。:)实际上,我的主要目标是收集表单(有4个文本框,用户输入,4个选项卡,所以有16个值,我需要将所有16个值的信息放到另一个屏幕上…因此我尝试了这一个作为示例..它工作正常..因此我可以继续我的工作..你能对我的主要目标给出任何建议吗..我还需要对我的目标实施一些其他改进..如果你不介意的话请注意这一页。我会自己做的。只有当我真的想做的时候我才会问。谢谢
child = tabs.getChildAt(i) as Repeat;
child.text.text = someNewValue;