<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    Flex 基于數據源的Menu Tree

    實現功能:
    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;
             
             [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}" 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'?>
    <menus>
        
    <node 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'
                
    target='mainFrame' />
            
    <node label='域管理' href='/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>

    源碼下載

    posted on 2009-05-07 17:34 々上善若水々 閱讀(2329) 評論(2)  編輯  收藏

    評論

    # re: Flex 基于數據源的Menu Tree  回復  更多評論   

    2009-05-08 10:19 | 張氏兄弟

    # re: Flex 基于數據源的Menu Tree  回復  更多評論   

    請問一下,這里的Object聲明部分應該加在哪里?什么文件的里面?

    還有“調用的時候在flashvars里面加上url=xxx”是什么意思? <param name="flashvars url=xxx" value="url=${ctx}/user/user!renderMenu.do?id=${user.usid}" /> 這樣嗎?

    2011-03-21 21:45 | xyza

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产人成网在线播放VA免费| 亚洲日本中文字幕天天更新| 野花视频在线官网免费1| 中文毛片无遮挡高潮免费| 亚洲色成人网一二三区| 91久久青青草原线免费| 亚洲人成在线观看| 57pao一国产成视频永久免费| 亚洲综合精品一二三区在线| 一级毛片**不卡免费播| 亚洲色偷偷偷网站色偷一区| 91禁漫免费进入| 亚洲资源最新版在线观看| 成年男女男精品免费视频网站 | 亚洲αv在线精品糸列| 久久成人免费电影| 亚洲精品午夜视频| 四虎影院在线免费播放| 免费的黄色的网站| 亚洲伊人久久大香线蕉综合图片| 国产在线精品免费aaa片| 中文字幕亚洲精品| 国产高清在线免费视频| a级毛片免费网站| 亚洲国产人成在线观看69网站| 免费福利在线播放| 国产成人亚洲精品电影| 永久亚洲成a人片777777| 6080午夜一级毛片免费看6080夜福利| 亚洲不卡视频在线观看| 免费人成网站在线高清| 人人揉揉香蕉大免费不卡| 亚洲中文字幕一二三四区苍井空| 国产一精品一aⅴ一免费| 日韩精品无码免费专区午夜不卡| 4480yy私人影院亚洲| 日日AV拍夜夜添久久免费| 久久久久久久久久免免费精品| 亚洲色欲www综合网| 亚洲Av无码国产情品久久| 一级做a爰全过程免费视频|