首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

FLEX如何遍历复杂的控件

2012-02-13 
FLEX怎么遍历复杂的控件?如何遍历控件?把VBOX跟HBOX结合布局成3*3九个框,比如以下的格式:XML codecanvas

FLEX怎么遍历复杂的控件?
如何遍历控件?把VBOX跟HBOX结合布局成3*3九个框,比如以下的格式:

XML code
<canvas>    <vbox>       <vbox><label /><vbox>...</vobx></vbox>    </vbox></canvas>

我怎么取每个框的数入框数据?

[解决办法]
递归.....................
[解决办法]
控件的id.属性名
比如
<mx:TextInput x="533" y="107" width="148" id="txtName"/>
//取值
txtName.text;
[解决办法]
思路1:不建议你去遍历组件去取数据。因为这样做灵活性也不好,如果里面多加两层Box,取值可能就有些乱了。
“VBOX跟HBOX结合布局成3*3九个框”,定义一个数据是2维数组用ArrayCollection,把他做成绑定对象。
依次与3*3的9个框 绑定上。最好是双向绑定上。可以利用<mx:Binding source="" destination=""/>
以后操作都是针对数据对象来操作,不用每次都去去组件的数值。

思路2:先去取组件的值,把你的3*3的9个框依次定义上ID,比如box_0_0, box_0_1, box_0_2, box_1_0 等等
以后去数据这样做
for (var i:int = 0; i < 3; i ++) {
for (var j:int = 0; j < 3; j ++) {
var value:String = this["box_"+ i +"_"+j ].text;
}
}

思路3:遍历组件(递归),下面是代码:
XML code
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"                        layout="absolute">    <mx:Script>        <![CDATA[            import mx.core.Container;                        private function walkAllNodes():void            {                walk(box.getChildren())            }                        private function walk(children:Array):void            {                for each(var child:Object in children) {                                        if (child is Container && Container(child).getChildren()) {                        walk(Container(child).getChildren());                    } else if (child is TextInput){                        var value:String = TextInput(child).text;                        trace(value);                    }                }            }        ]]>    </mx:Script>    <mx:VBox id="box">        <mx:HBox>            <mx:Label text="website"/>            <mx:TextInput id="txtInput" text="1"/>            <mx:HBox>                <mx:TextInput text="2"/>                <mx:HBox>                    <mx:TextInput text="3"/>                </mx:HBox>                <mx:HBox>                    <mx:TextInput text="4"/>                </mx:HBox>                    <mx:TextInput text="5"/>            </mx:HBox>        </mx:HBox>        <mx:Button label="walkAllNodes" click="walkAllNodes()" />    </mx:VBox></mx:Application> 

热点排行