0

フレックス3で再利用可能なコンポーネントを実装しようとしています。動的なタブナビゲーターがあります。画面には、クリック操作のボタンがあり、子が作成されるvboxを備えたタブナビゲーターがあり、vboxには入力を受け取るテキストボックスが1つあります。ユーザーからの情報。

クリックボタンの横に表示ボタンがあります。ユーザーが[表示]ボタンをクリックし、4つのタブが開いている場合は、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>

1行はエラーを示しています。私はフレックスの最初の学習者です。しかし、私は自分で学び、やろうとしました。これが私の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に配置する必要があります。

どんな体も私を助けることができますか?

ところで:それはフレックス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 に答える