我的漫漫程序之旅
专注于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
々上善若水々
阅读(2324)
评论(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
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 々上善若水々
导航
BlogJava
首页
新随笔
联系
管理
<
2009年5月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(39)
给我留言
查看公开留言
查看私人留言
随笔档案
(43)
2021年12月 (1)
2012年12月 (1)
2012年11月 (1)
2009年11月 (2)
2009年10月 (1)
2009年8月 (1)
2009年7月 (1)
2009年5月 (2)
2009年4月 (2)
2009年3月 (1)
2009年2月 (3)
2009年1月 (1)
2008年12月 (2)
2008年11月 (3)
2008年9月 (2)
2008年8月 (1)
2008年7月 (2)
2008年6月 (2)
2008年5月 (9)
2008年4月 (2)
2007年12月 (3)
文章分类
(304)
AJAX(7)
(rss)
flex3(1)
(rss)
Hibernate(4)
(rss)
J2EE
(rss)
J2ME(2)
(rss)
J2SE(40)
(rss)
JavaScript(59)
(rss)
JavaWeb(27)
(rss)
Java笔试与面试(52)
(rss)
JQuery(1)
(rss)
Maven(2)
(rss)
opensource(15)
(rss)
Spring(10)
(rss)
SSH整合系列(2)
(rss)
Struts1.x(3)
(rss)
Struts2(13)
(rss)
WebService(14)
(rss)
数据库(18)
(rss)
数据结构与算法(7)
(rss)
设计模式(17)
(rss)
软件测试(10)
(rss)
文章档案
(257)
2021年12月 (1)
2012年12月 (2)
2012年9月 (2)
2012年7月 (5)
2012年1月 (1)
2011年10月 (1)
2010年12月 (1)
2009年9月 (2)
2009年7月 (2)
2009年6月 (1)
2009年4月 (3)
2009年3月 (3)
2009年1月 (2)
2008年12月 (4)
2008年11月 (4)
2008年10月 (2)
2008年9月 (2)
2008年8月 (10)
2008年7月 (22)
2008年6月 (13)
2008年5月 (45)
2008年4月 (17)
2008年3月 (5)
2008年2月 (11)
2008年1月 (27)
2007年12月 (45)
2007年11月 (24)
搜索
最新评论
1. re: 使用MyEclipse构建MAVEN项目
评论内容较长,点击标题查看
--龙平
2. re: JDK中的URLConnection参数详解[未登录]
好文要顶
--wy
3. re: Ant path 匹配原则[未登录]
我喜欢你惠茹
--aaa
4. re: Ant path 匹配原则[未登录]
dfdfdfdfd
--aaa
5. re: 利用jSMSEngine开源包进行短信的收发[未登录]
qq邮箱
550725115@qq.com
--我是菜鸟
阅读排行榜
1. Linux上安装JDK1.7与Tomcat7.0(24245)
2. 将java应用程序打包成独立运行的.exe方法(19803)
3. HttpURLConnection请求数据流的写入(write)和读取(read)(19083)
4. 基于jsTree的无限级树JSON数据的转换(17608)
5. javascript文件夹选择框的两种解决方案(16913)
评论排行榜
1. 基于jsTree的无限级树JSON数据的转换(27)
2. Flash图表(FusionChartsV3)的简单应用 (22)
3. WEB页面导出为Word文档后分页&横向打印的方法 (14)
4. javascript文件夹选择框的两种解决方案(10)
5. [原创]J2ME/J2EE实现用户登录交互(9)