实现功能:? 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();"?width="242"?height="442"?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;?
- ??????????
- ?????????[Embed("open.gif")]?
- ?????????public?var?openicon:Class;?
- ??????????[Bindable]?
- ??????????[Embed("close.gif")]?
- ?????????public?var?closeicon:Class;?
- ??????????[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);?
- ????????????????????//得到节点对象?
- ????????????????????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默认在新窗口中打开?
- ?
- ????????????????????}?
- ????????????????}?
- ??????????}?
- ??????????????
- ?????????//页面跳转的方法 ?
- ??????????private?function?openURL(url:String?,target:String):void?
- ??????????{?
- ?????????????var?request:URLRequest?=?new?URLRequest(url);??
- ?????????????navigateToURL(request,target);?
- ??????????}?
- ????]]>??
- </ ????mx:HTTPService?url="{strUrl}"?id="menu"?useProxy="false"???
- ?????????showBusyCursor="true"?result="LoadMenu(event)"?resultFormat="xml"/>??
- mx:Tree?iconFunction="treeIcon"?id="tree1"?width="100%"?height="100%"?labelField="@label"??itemClick="itemClickHandler(event)"/>??
- mx:Application>??
调用的时候在flashvars里面加上url=xxx
object?classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"??
- ????????????id="tree"?width="242"?height="442"??
- ????????????codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" ????????????param?name="movie"?value="${ctx}/js/as/menu.swf"? ????????????param?name="quality"?value="high"?param?name="bgcolor"?value="#869ca7"?param?name="allowScriptAccess"?value="sameDomain"? ??????????????
- param?name="flashvars"?value="url=${ctx}/user/user!renderMenu.do?id=${user.usid}"?embed?src="tree.swf"?quality="high"?bgcolor="#869ca7"??
- ????????????????width="242"?height="442"?name="tree"?align="middle"??
- ????????????????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'?>??
- menusnode?label='系统管理'?icon="openicon" ????????node?label='用户管理'?icon="closeicon"??
- ????????????href='/main/user/user-list.jsp'?target='mainFrame'?node?label='权限管理'?href='/main/user/action-list.jsp'??
- ????????????target='mainFrame'?node?label='角色管理'?href='/main/user/role-list.jsp'??
- node?label='域管理'?href='/main/user/user-list.jsp'??
- node?label='测试'node?label='sub?folder'?href=''?target='mainFrame'?nodenode?label='客服' ????????node?label='终端信息查询'?href=''?target='mainFrame'?node?label='客服问题-解答记录'?href=''?target='mainFrame'?>??

源码下载
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|