| 实现功能: 1.由外部参数flashvars指定数据源的文件位置或render链接.
 2.在源数据上加href和target属性来控制打开窗口.
 3.可自定义父节点和子节点图标,不设置采用系统默认.
 直接上源码:
 
 复制代码 代码如下:  <?xml version="1.0" encoding="utf-8"?>
 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 fontFamily="simsun" fontSize="12"
 layout="absolute" creationComplete="menu.send();" initialize="init()">
 <mx:Script>
 <![CDATA[
 import mx.controls.Alert;
 import mx.events.ListEvent;
 import mx.collections.ArrayCollection;
 import mx.rpc.events.ResultEvent;
 [Bindable]
 private var strUrl:String = "TreeMenus.xml";
 [Bindable]
 private var menus:XML;
 [Bindable]
 [Embed("open.gif")]
 public var openicon:Class;
 [Bindable]
 [Embed("close.gif")]
 public var closeicon:Class;
 [Bindable]
 [Embed("leaf.gif")]
 public var leaficon:Class;
 private function init():void
 {
 this.strUrl = this.parameters.url;
 }
 private function LoadMenu(event:ResultEvent):void
 {
 menus = XML(event.result);
 var results:XMLList = menus.node;
 tree1.dataProvider = results;
 }
 //菜单图标设置
 private function treeIcon(item:Object):Class
 {
 var node:XML = XML(item);
 trace('icon:' + node.@icon);
 var str : String = node.@icon;
 //已经设置图标
 if(node.hasOwnProperty("@icon"))
 {
 if(node.@icon == 'openicon')
 {
 return openicon;
 }
 if(node.@icon == 'closeicon')
 {
 return closeicon;
 }
 if(node.@icon == 'leaficon')
 {
 return leaficon;
 }
 }
 else
 {
 //如果没定义icon就直接用默认的
 if(!tree1.dataDescriptor.isBranch(item))
 {
 return tree1.getStyle("defaultLeafIcon");
 }
 if(tree1.isItemOpen(item))
 {
 return tree1.getStyle("folderOpenIcon");
 }
 else
 {
 return tree1.getStyle("folderClosedIcon");
 }
 }
 return null;
 }
 /**
 * 菜单树单项点击事件
 * */
 private function itemClickHandler(evt:ListEvent):void
 {
 var item:Object = Tree(evt.currentTarget).selectedItem;
 if (tree1.dataDescriptor.isBranch(item))
 {
 //tree1.expandItem(item, !groupTree.isItemOpen(item), true);
 }
 else
 {
 //得到节点对象
 var node:XML = XML(item);
 //如果有属性href
 if(node.hasOwnProperty("@href") && node.hasOwnProperty("@target"))
 {
 openURL(node.@href,node.@target);
 }
 if(node.hasOwnProperty("@href") && (node.hasOwnProperty("@target") == false))
 {
 //没有指定target默认在新窗口中打开
 openURL(node.@href,"_blank");
 }
 }
 }
 //页面跳转的方法
 private function openURL(url:String ,target:String):void
 {
 var request:URLRequest = new URLRequest(url);
 navigateToURL(request,target);
 }
 ]]>
 </mx:Script>
 <mx:HTTPService url="{strUrl}" useProxy="false"
 showBusyCursor="true" result="LoadMenu(event)" resultFormat="xml"/>
 <mx:Tree iconFunction="treeIcon" labelField="@label" itemClick="itemClickHandler(event)"/>
 </mx:Application>
 
 调用的时候在flashvars里面加上url=xxx
 
 复制代码 代码如下:  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 id="tree"
 codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
 <param value="${ctx}/js/as/menu.swf" />
 <param value="high" />
 <param value="#869ca7" />
 <param value="sameDomain" />
 <!-- 指定菜单的数据源 -->
 <param value="url=${ctx}/user/user!renderMenu.do?id=${user.usid}" />
 <embed src="http://www.jb51.net/article/tree.swf" quality="high" bgcolor="#869ca7"
 width="242"
 play="true"
 loop="false"
 quality="high"
 allowScriptAccess="sameDomain"
 type="application/x-shockwave-flash"
 pluginspage="http://www.adobe.com/go/getflashplayer">
 </embed>
 </object>
 其中url可以指定xml文件的位置或者render的链接
 示例文件xml:
 <?xml version='1.0' encoding='utf-8'?>
 <menus>
 <node label='系统管理' icon="openicon">
 <node label='用户管理' icon="closeicon"
 href='http://www.jb51.net/main/user/user-list.jsp' target='mainFrame' />
 <node label='权限管理' href='http://www.jb51.net/main/user/action-list.jsp'
 target='mainFrame' />
 <node label='角色管理' href='http://www.jb51.net/main/user/role-list.jsp'
 target='mainFrame' />
 <node label='域管理' href='http://www.jb51.net/main/user/user-list.jsp'
 target='mainFrame' />
 <node label='测试'>
 <node label='sub folder' href='' target='mainFrame' />
 </node>
 </node>
 <node label='客服'>
 <node label='终端信息查询' href='' target='mainFrame' />
 <node label='客服问题-解答记录' href='' target='mainFrame' />
 </node>
 </menus>
 
 
 
 (编辑:锡盟站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |