Flex 基于数据源的Menu Tree实现代码(flappybird源代码)快来看

随心笔谈5个月前更新 admin
218 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了使用Mx库在Flex框架中实现一个树状菜单系统的开发过程。文章主要讲解了如何通过Mx控件和事件处理实现菜单的创建与管理,核心内容包括: 1. **菜单初始化与数据加载**:通过`init()`方法读取URL参数,并在`LoadMenu()`方法中解析XML数据,将结果绑定到一个数据提供器中。 2. **菜单图标设置**:根据XML节点中的`@icon`属性动态设置菜单图标。如果`@icon`属性不存在,则根据节点类型(文件、文件夹、链接)自定义默认图标。 3. **菜单项点击事件处理**:定义了`itemClickHandler`方法,用于处理菜单项点击事件。对于文件夹项,调用`tree1.expandItem()`方法进行层级展开;对于文件或链接项,检查`@href`和`@target`属性,调用`openURL()`方法跳转到指定URL。 4. **页面跳转功能**:通过`openURL()`方法创建URL请求对象,并调用`navigateToURL()`方法打开URL,支持在新窗口或当前窗口打开目标。 文章整体展示了如何通过Flex和Mx库实现一个功能完善的树状菜单系统,包括数据加载、图标设置、交互操作和页面跳转等核心功能。

fontFamily=”simsun” fontSize=”12″

layout=”absolute” creationComplete=”menu.send();” width=”242″ height=”442″ initialize=”init()”>

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);

}

]]>

showBusyCursor=”true” result=”LoadMenu(event)” resultFormat=”xml”/>

© 版权声明

相关文章