flex 和 flexlib类库 实现 菜单和 TabNavigator

看到 extjs 的 TabNavigator和漂亮. 很实用.

 

对于一个后台管理程序来说 可以同时操作多个 任务.

 

如果用 flex 做一个后台管理程序 是否可以实现同样的功能呢.

 

答案是是的.并且已经 测试成功. 功能一样. 代码更简单.

 

其实并不复杂 .

 

上网络上面搜索下了..找到了一篇关于 flexlib的 文章可以实现 带关闭 按钮 的 TabNavigator

 

http://code.google.com/p/flexlib/

 

如果要找看更详细的参数.看官方文档还是最好的.比搜索要全面.

 

菜单借用 了 flex explore 的代码.

 

下载 swc 文件放到工程 的 libs 下面,添加到 path 里面.

 

添加xmlns

 

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:flexlib="http://code.google.com/p/flexlib/"
	xmlns:explorer="*"
   

 

进行代码编写.

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:flexlib="http://code.google.com/p/flexlib/"
	xmlns:explorer="*"
    width="100%" height="100%" pageTitle="我的系统测试."
    initialize="sdk.send();" fontSize="12">

    <mx:Script>
        <![CDATA[
        	import mx.controls.SWFLoader;
        	import mx.containers.VBox;
        	import mx.controls.Label;
	        import flexlib.controls.SuperTabBar;
			import flexlib.events.TabReorderEvent;
			import flexlib.controls.tabBarClasses.SuperTab;

			[Embed(source="./assets/document.png")]
			private var document_icon:Class;//tab左面的图标.

	        private function treeChanged(event:Event):void
	        {//响应树点击的双击事件.
	            var nodeApp:String = compLibTree.selectedItem.@app;
	            var nodeLabel:String = compLibTree.selectedItem.@label;
	            //app是xml里面的定义的一个属性.
	            if (nodeApp != null && nodeApp != "")
	            {//如果有app这个属性.说明这个是一个叶子节点.开始加载那个flex文件.
	                addTab(nodeLabel, contentId, nodeApp);
	                //打开选项卡.带关闭按钮的选项卡.
	            }else{//如果里面没有app这个字段.说明这个是个文件夹.
	                compLibTree.expandItem(compLibTree.selectedItem, true, true);
	                //展开文件夹显示下面的内容.
	            }
	        }

	        private function addTab(myLabel:String, navigator:SuperTabNavigator,nodeApp:String):void {
	        		var swfLoader:SWFLoader = new SWFLoader();
	        		//动态加载flex类.在这里进行定义.每一个table新建立一个实例.
					var curNum:Number = contentId.numChildren + 1;
					var child:VBox = new VBox();
					child.setStyle("closable", true);
					//设置选项卡可以关闭.
					child.label = myLabel;
					//设置选项卡的名称.
					child.icon = document_icon;
					//设置选项卡的左面的文档图标.
					swfLoader.source = nodeApp + ".swf";
					//开始动态加载swf文件.
					child.addChild(swfLoader);
					navigator.addChild(child);
					//将加载后的swf类放到child里面,再放到navigator里面.
					contentId.selectedIndex = contentId.numChildren - 1;
			}

	        private function sdkLoaded():void
	        {
	            explorerTree = XML(sdk.lastResult.node);
	            compLibTree.dataProvider = explorerTree;
	        }
        ]]>
    </mx:Script>

    <mx:HTTPService id="sdk" url="explorer.xml" resultFormat="e4x" result="sdkLoaded();"/>
    <mx:XML id="explorerTree"/>

    <mx:HDividedBox width="100%" height="100%">
        <mx:Panel width="30%" height="100%" title="测试菜单">
            <mx:Tree id="compLibTree" width="100%" height="100%" showRoot="false" labelField="@label"
            change="treeChanged(event);"/>
        </mx:Panel>

		<flexlib:SuperTabNavigator id="contentId" scrollSpeed="25" dropShadowEnabled="false"
			width="100%" height="100%" horizontalGap="0"
			closePolicy="{SuperTab.CLOSE_ALWAYS}" dragEnabled="false" dropEnabled="false"
			tabWidth="160"
		/>

    </mx:HDividedBox>
</mx:Application>

 

 

<flexlib:SuperTabNavigator id="contentId" scrollSpeed="25" dropShadowEnabled="false"
			width="100%" height="100%" horizontalGap="0"
			closePolicy="{SuperTab.CLOSE_ALWAYS}" dragEnabled="false" dropEnabled="false"
			tabWidth="160"
		/>

 这个就是这个 带关闭按钮的组件.

 

closePolicy="{SuperTab.CLOSE_ALWAYS}"

总是显示关闭按钮.

 

dragEnabled="false" dropEnabled="false"
禁用拖拽.用处好像不大去掉了.

 

 

现在还有一点小问题.

 

1.打开的swf 对象.不可以全部充满  TabNavigator参数怎么配置不太好找.

2.总是新打开一个..没有对已经打开的  TabNavigator  进行切换.

   这似乎.弄一个 map的进行匹配判断下就可以了.

 

很是高兴呢..做出的东西竟可以如此简单.

唯一不好的地方是 文件太大了..在网络条件不好的情况访问会有很大问题.

啥还没有写呢 文件就已经变成 1.5MB了.

 

 

  • 大小: 12.1 KB
  • 查看图片附件
时间: 2024-10-03 05:06:37

flex 和 flexlib类库 实现 菜单和 TabNavigator的相关文章

flex 和 flexlib类库 实现 菜单和 TabNavigator (二)

解决 菜单重复打开问题..   按照以前的 思路自己保存一个 map 然后根据这个 map 里面的值.   来判断 是否已经打开标签.但是实际写的时候有点问题.   动态打开的标签的 children 数量 是不断减少的.   而用 delete 是删除不掉元素的.   但是发现 action的动态语言的灵活性还是挺强的.   于是 去查询文档找函数..   最后解决直接去访问 childern 里面的元素.   for each (var childTab:VBox in contentId.

基于XML和JSON设计的Flex

本文很好的例举了如何将Flex 和Java一起使用.Java将运行这种服务.Flex将在客户端上运行.它们两者之间的协议可以真正的实现你想要的.既然这样,那么先使用XML,然后使用Javascript Object Notation (JSON),因为这两者都是我们最常见的Web 2.0标准 创建服务器区块 XML实例从表1中一个简单的JSP文档开始 Listing 1. xml.jsp ﹤jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

Flex/Silverlight的技术比较

别人博客上看见的,一文下去,引起口水大战,其实仁者见仁,智者见智,每种语言都不可能是完善的,扬长避短才是王道. 基于个人的使用经验,我从语言.框架.开发环境和运行环境四个方面对Flex和Silverlight这两门技术做一个比较,自己认为这个比较还是比较全面的.(这样的比较有意义吗?个人意见,只要别把自己当成宗教教徒,将语言看作工具而不是信仰,那么比较就是有意义的.)   语言(Silverlight以C#为准) 特性 比较 胜出 Flex Silverlight 语法 Flex的编程语言Act

Flex/AS3/flash player支持屏蔽右键菜单,自定义菜单,并设置相应的菜单事件(示例,图解)

Flex/AS3/flash player支持屏蔽右键菜单,自定义菜单,并设置相应的菜单事件(示例,图解) 播放器 版本 11.2以后支持右键菜单屏蔽及自定义菜单 1.更新播放器 ,11.2 以上版本 http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_3.swc http://download.macromedia.com/get/flashplayer/updaters/11/playerglob

Flex自定义右键菜单具体实现_Flex

1.自定义右键菜单注册类: 项目中新增注册类 RightClickManager,代码如下: 复制代码 代码如下: package com.siloon.plugin.rightClick { import flash.display.DisplayObject; import flash.display.InteractiveObject; import flash.events.ContextMenuEvent; import flash.events.MouseEvent; import

在Flex中给datagrid添加右键菜单项的具体实现_Flex

复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" crea

Flash/Flex学习笔记(26):AS3自定义右键菜单

直接上代码吧,关键地方都加上注释了: var cm:ContextMenu=new ContextMenu(); cm.hideBuiltInItems();//隐藏系统内置的菜单 //创建菜单项(构造函数参数含义:标题名字,前面是否增加分割线,是否可用,是否可见) var menuItems:Array = [ new ContextMenuItem("菜单1",false,true,true), new ContextMenuItem("菜单2",false,t

Flex树形菜单实例带跳转功能根据官方示例添加链接

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="top"     horizontalAlign="center"  paddingTop="0&qu

As 3.0 常用类库

APIs.Libs.Components 1.as3ebaylib http://code.google.com/p/as3ebaylib/ 2.as3youtubelib http://code.google.com/p/as3youtubelib/ 3.as3flickrlib http://code.google.com/p/as3flickrlib/ 4.Yahoo ASTRA Flash Components http://developer.yahoo.com/flash/astra