Flex中Tree组件的数据源举例来说(xml,array,object)

Flex中Tree组件的数据源举例(xml,array,object)
<?xml version="1.0" encoding="utf-8"?>  
<!-- Tree control example. -->  
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">  
 
    <mx:Script>  
        <![CDATA[  
 
            [Bindable]  
            public var selectedNode:XML;  
           
         [Bindable]  
         public var selectedNodeArr:Object;  

         // Event handler for the Tree control change event.  
         public function treeChanged(event:Event):void {  
             selectedNode=Tree(event.target).selectedItem as XML;  
             selectedNodeArr=Tree(event.target).selectedItem as Object;  
         }  
     ]]>  
 </mx:Script>  

 <mx:XMLList id="treeData_xmllist">  
     <node label="Mail Box">  
         <node label="Inbox">  
             <node label="Marketing"/>  
             <node label="Product Management"/>  
             <node label="Personal"/>  
         </node>  
         <node label="Outbox">  
             <node label="Professional"/>  
             <node label="Personal"/>  
         </node>  
         <node label="Spam"/>  
         <node label="Sent"/>  
     </node>      
 </mx:XMLList>  

 <mx:XML id="treeData_xml">  
     <node label="Mail Box">  
         <node label="Inbox">  
             <node label="Marketing"/>  
             <node label="Product Management"/>  
             <node label="Personal"/>  
         </node>  
         <node label="Outbox">  
             <node label="Professional"/>  
             <node label="Personal"/>  
         </node>  
         <node label="Spam"/>  
         <node label="Sent"/>  
     </node>      
 </mx:XML>  
 <!--自己理解Array只是把object又封装了一层,仅此而已。可能这样又能用array的特性,  
     其中的记录又可以object的特性。具体的好处,看具体的环境吧-->  
 <mx:Array id="treeData_array">  
     <mx:Object label="Mail Box">  
         <mx:children>  
             <mx:Object label="Inbox">  
                 <mx:children>  
                     <mx:Object label="Marketing"/>  
                     <mx:Object label="Product Management"/>  
                     <mx:Object label="Personal"/>  
                 </mx:children>  
              </mx:Object>   
              <mx:Object label="Outbox">  
                 <mx:children>  
                     <mx:Object label="Professional"/>  
                     <mx:Object label="Personal"/>  
                 </mx:children>  
              </mx:Object>    
              <mx:Object label="Spam"/>  
              <mx:Object label="Sent"/>  
         </mx:children>  
     </mx:Object>  
 </mx:Array>  
   
 <mx:ArrayCollection id="treeData_arrayCollection">  
     <mx:Object label="Mail Box">  
         <mx:children>  
             <mx:Object label="Inbox">  
                 <mx:children>  
                     <mx:Object label="Marketing"/>  
                     <mx:Object label="Product Management"/>  
                     <mx:Object label="Personal"/>  
                 </mx:children>  
              </mx:Object>   
              <mx:Object label="Outbox">  
                 <mx:children>  
                     <mx:Object label="Professional"/>  
                     <mx:Object label="Personal"/>  
                 </mx:children>  
              </mx:Object>    
              <mx:Object label="Spam"/>  
              <mx:Object label="Sent"/>  
         </mx:children>  
     </mx:Object>  
 </mx:ArrayCollection>  
   
 <mx:Object label="Mail Box" id="treeData_object">  
      <mx:children>  
          <mx:Object label="Inbox">  
              <mx:children>  
                  <mx:Object label="Marketing"/>  
                  <mx:Object label="Product Management"/>  
                  <mx:Object label="Personal"/>  
              </mx:children>  
           </mx:Object>   
           <mx:Object label="Outbox">  
                <mx:children>  
                    <mx:Object label="Professional"/>  
                    <mx:Object label="Personal"/>  
                </mx:children>  
             </mx:Object>    
             <mx:Object label="Spam"/>  
             <mx:Object label="Sent"/>  
        </mx:children>  
    </mx:Object>  
 
    <mx:Panel title="Tree Control Example" height="75%" width="75%"   
        paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">  
 
        <mx:Label width="100%" color="blue"   
            text="Select a node in the Tree control."/>  
 
        <mx:HDividedBox width="100%" height="100%">  
            <!--更改dataProvider的属性值,看不同的数据源得到的结果。-->  
            <!--发现showRoot="false"对array没作用。但是object,xml都行。似乎明白道理,又说不出来。用的时候注意好了。-->  
            <mx:Tree id="myTree" width="50%" height="100%" labelField="label" 
                showRoot="false" dataProvider="{treeData_object}" change="treeChanged(event)"/>  
            <!--其实这个只是提醒大家,xml和object的处理方式的不同。要进行别的操作,完成更发杂的功能,原理是一样的^_^-->  
              
            <!--如果是Array或ArrayCollection做数据源,要执行下面的操作-->  
            <mx:TextArea height="100%" width="50%" 
                text="Selected Item: {selectedNodeArr.label}"/>  
                  
            <!--如果是XML或XMLList做数据源,要执行下面的操作-->      
            <!--<mx:TextArea height="100%" width="50%" 
                text="Selected Item: {selectedNode.@label}"/>-->  
        </mx:HDividedBox>  
          
    </mx:Panel>  
</mx:Application>