flex中ArrayCollection用法举例

发布于,归属于flex实例沙发还空着,抢! 共有1,563人围观    

先来看演示:

说明:这里使用MenuBar组件,MenuBar的数据源是一个ArrayCollection。用户试着修改表单中的索引值和label值,点击编辑按钮后修改ArrayCollection数据,MenuBar的显示数据也随之改变。这就是ArrayCollection的便利神奇之处。

来看源代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="inttApp(event)">
  3.     <mx:Style>
  4.         Application{fontSize:12px;}
  5.     </mx:Style>
  6.     <mx:MenuBar id="menu" dataProvider="{menu_dp}" width="400" />
  7.     <mx:Form x="10" y="63">
  8.         <mx:FormHeading label="菜单编辑" />
  9.         <mx:FormItem label="一级菜单索引">
  10.             <mx:TextInput id="menuIdx" restrict="0-9" text="0" />
  11.         </mx:FormItem>
  12.         <mx:FormItem label="二级菜单索引">
  13.             <mx:TextInput id="subMenuIdx" restrict="0-9" text="0" />
  14.         </mx:FormItem>
  15.         <mx:FormItem label="该索引值的菜单项的文本">
  16.             <mx:TextInput id="label_ti"/>
  17.         </mx:FormItem>   
  18.         <mx:FormItem>
  19.             <mx:Button label="编辑" click="editMenu()"/>
  20.         </mx:FormItem>                   
  21.     </mx:Form>
  22. </mx:Application>
  1. <mx:Script>
  2.         <![CDATA[
  3.             import mx.collections.ArrayCollection;
  4.             import mx.events.FlexEvent;
  5.             [Bindable]
  6.             private var menu_dp:ArrayCollection;
  7.             private function inttApp(evt:FlexEvent):void{
  8.                 var temp:Array = new Array();
  9.                 var subNodes:ArrayCollection = new ArrayCollection([
  10.                     {label:"New"},{label:"Open"},
  11.                     {label:"Close",enabled:false}
  12.                 ])
  13.                 temp.push({label:'文件',children:subNodes});
  14.                 temp.push({label:"编辑"});
  15.                 subNodes = new ArrayCollection( [
  16.                     {label:"50%", type:"radio", groupName:"one"},
  17.                     {label:"100%", type:"radio",groupName:"one",selected:true},
  18.                     {label:"150%",type:"radio",groupName:"one"}
  19.                 ]);
  20.                 temp.push({label:"视图大小",children:subNodes});
  21.                 menu_dp = new ArrayCollection(temp);
  22.             }
  23.            
  24.             private function editMenu():void{
  25.                 var itemToEdit:Object;
  26.                 try {
  27.                     itemToEdit = menu_dp.getItemAt(int(menuIdx.text));
  28.                     if(subMenuIdx.text) {
  29.                         itemToEdit = itemToEdit.children.getItemAt(int(subMenuIdx.text));
  30.                     }
  31.                     itemToEdit.label = label_ti.text;
  32.                     menu_dp.itemUpdated(itemToEdit);
  33.                 }
  34.                 catch(ex:Error){
  35.                
  36.                 }               
  37.             }
  38.         ]]>
  39.     </mx:Script>
(如果您喜欢这篇教程,可以通过支付宝打赏我们1元哦,拜谢!)

跟作者说两句

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-? :) :( :!: 8-O 8)