<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

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


    網站導航:
     
    主站蜘蛛池模板: 日本免费中文视频| 国产成人免费AV在线播放| 嘿嘿嘿视频免费网站在线观看| 亚洲人JIZZ日本人| 成人无码WWW免费视频| 亚洲免费人成在线视频观看| 国产精品免费αv视频| 亚洲人成亚洲人成在线观看| 国产日韩久久免费影院 | 亚洲宅男天堂在线观看无病毒| 国产成人亚洲精品蜜芽影院| 国产一级淫片免费播放| 特级毛片A级毛片100免费播放 | 亚洲啪AV永久无码精品放毛片| 97人伦色伦成人免费视频 | 久久亚洲精品人成综合网| 一级毛片免费不卡在线| 亚洲精品中文字幕无码AV| 国产精品久久久久免费a∨ | 精品一区二区三区免费毛片| 亚洲精品专区在线观看| 日韩精品无码免费专区午夜| 亚洲成人在线网站| 三年片在线观看免费大全| 国产成人精品亚洲| 亚洲成AV人片在线观看无| 国产精品爱啪在线线免费观看| 国产亚洲精品VA片在线播放| 免费国产成人午夜电影| 99精品视频在线观看免费| 亚洲第一精品电影网| 小小影视日本动漫观看免费| 亚洲国产免费综合| 亚洲精品mv在线观看| 日韩一级视频免费观看| 中文字幕不卡免费高清视频| 亚洲国产成人久久精品app | 77777亚洲午夜久久多人| 中文字幕乱码免费视频| 免费人成又黄又爽的视频在线电影| 久久精品国产99精品国产亚洲性色|