`
demojava
  • 浏览: 554262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flex menu

阅读更多
截止目前为止Flex Hero尚未发布Flex 4的MenuBar及Menu组件,所以我们使用Flex 3版本的Menu
1.xml作为数据源创建xml
Flex Menu.createMenu()方法来创建Menu对象。


private function createAndShow():void {
		var myMenu:Menu = Menu.createMenu(null, myMenuData, false);
		myMenu.labelField="@label";
		myMenu.show(10, 10);
		}



<fx:Declarations>
		<!-- Define the menu data. -->
		<fx:XML format="e4x" id="myMenuData">
			<root>
				<menuitem label="MenuItem A" >
					<menuitem label="SubMenuItem A-1" enabled="false"/>
					<menuitem label="SubMenuItem A-2"/>
				</menuitem>
				<menuitem label="MenuItem B" type="check" toggled="true"/>
				<menuitem label="MenuItem C" type="check" toggled="false"/>
				<menuitem type="separator"/>     
				<menuitem label="MenuItem D" >
					<menuitem label="SubMenuItem D-1" type="radio" 
							  groupName="one"/>
					<menuitem label="SubMenuItem D-2" type="radio" 
							  groupName="one" toggled="true"/>
					<menuitem label="SubMenuItem D-3" type="radio" 
							  groupName="one"/>
				</menuitem>
			</root>
		</fx:XML>
	</fx:Declarations>


2.arrayList作为数据源创建xml


private function createAndShow():void {
var myMenu:Menu = Menu.createMenu(null, menuData, true);
myMenu.show(10, 10);
}
 
[Bindable] 
public var menuData:Array = [
{label: "MenuItem A", children: [
	{label: "SubMenuItem A-1", enabled: false},
	{label: "SubMenuItem A-2", type: "normal"} 
]},
{label: "MenuItem B", type: "check", toggled: true},
{label: "MenuItem C", type: "check", toggled: false},
{type: "separator"},
{label: "MenuItem D", children: [
	{label: "SubMenuItem D-1", type: "radio", 
		groupName: "g1"},
	{label: "SubMenuItem D-2", type: "radio", 
		groupName: "g1", toggled: true}, 
	{label: "SubMenuItem D-3", type: "radio", 
		groupName: "g1"} 
]} 
];


3.对于flex3来说设置menu的icon很简单
需要这样做:
1.图片
[Bindable]
[Embed(source="demo.png")]
public var demo:Class;
2.menu的xml中引用
<menuitem label="demo"  icon="demo"/>
3.然后 menu.iconField="@icon";
但到了flex4中就不行了,很诡异的问题出现了当然你可以试一下
<?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"
			   minWidth="1024" minHeight="768"
			   creationComplete="creationCompleteHandler(event)">
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Menu;
			import mx.events.FlexEvent;
			
			[Embed(source="save.png")]
			public var bpel:Class;
			
			[Bindable]private var mdp:XML = <root><menuitem label="测试" icon="bpel"/></root>;
			private var menu:Menu;
			
			protected function creationCompleteHandler(event:FlexEvent):void
			{
				menu = Menu.createMenu(this,mdp,false);
				menu.width = 100;
				menu.rowHeight = 50;
				menu.labelField = "@label";
				menu.iconField = "@icon";
				menu.iconFunction = iconFun;
				menu.show(10,10);
			}
			
			private function iconFun(item:Object):Class{
				return this[item.@icon];
			}
		]]>
	</fx:Script>
	
</s:Application>

效果图:




4.改变menuiconField,checkIcon,radioIcon等CSS样式属性及类属性.

<fx:Script>
	<![CDATA[
	import mx.controls.Menu;
	[Bindable]
	[Embed(source="assets/my.png")]
	public var my:Class;

	[Bindable]
	[Embed(source="assets/flex.png")]
	public var flex:Class;

	[Bindable]
	[Embed(source="assets/hero.png")]
	public var hero:Class;
	private function createAndShow():void {
	var myMenu:Menu = Menu.createMenu(null, myMenuData, false);
	myMenu.labelField="@label";
	myMenu.setStyle('checkIcon', flex);
	myMenu.setStyle('radioIcon', hero);
	myMenu.iconField="@icon";
	myMenu.show(10, 10);
	}
	]]>
</fx:Script>
<fx:Declarations>
	<!-- Define the menu data. -->
	<fx:XML format="e4x" id="myMenuData">
		<root>
			<menuitem label="Menu A" icon="my">
				<menuitem label="SubMenu A1" enabled="false"/>
				<menuitem label="SubMenu A2"/>
			</menuitem>
			<menuitem label="Menu B" type="check" toggled="true"/>
			<menuitem label="Menu C" type="check" toggled="false" 
					  icon="my"/>
			<menuitem type="separator"/>     
			<menuitem label="Menu D" icon="my">
				<menuitem label="SubMenu D1" type="radio" 
						  groupName="one"/>
				<menuitem label="SubMenu D2" type="radio" 
						  groupName="one"/>
				<menuitem label="SubMenu D3" type="radio" 
						  groupName="one" toggled="true"/>
			</menuitem>
		</root>
	</fx:XML>
</fx:Declarations>


5.使用fx:model动态创建menu的数据源

<fx:Declarations>
<fx:Model id="Heros">
	<Root>
		<Hero label="Menu A">
			<children label="SubMenu A1"/>
			<children label="SubMenu A2"/>
		</Hero>
		<Hero label="Menu B">
			<children label="Menu B1">
				<children label="SubMenu B2"/>
				<children label="SubMenu B3"/>
			</children>
			<children label="Menu B4">
				<children label="Menu B5"/>
				<children label="Menu B6" enabled="false"/>
			</children>
		</Hero>
		<!-- The items in this entry are bound to the form data -->
		<Hero label="{menuName.text}">
			<children label="{item1.text}"/>
			<children label="{item2.text}"/>
			<children label="{item3.text}"/>
		</Hero>
	</Root>
</fx:Model>
</fx:Declarations>
<fx:Script>
	<![CDATA[

	import mx.controls.Menu;
	public var productMenu:Menu;

	public function initMenu(): void
	{
	productMenu = Menu.createMenu(null, Heros.Hero);
	productMenu.setStyle("disabledColor", 0xCC3366);
	productMenu.show(10,10);
	}

	]]>
</fx:Script>
<s:Button label="Show Products" click="initMenu()"/>
<s:Form>
	<s:FormItem label="Third Submenu title">
		<s:TextInput id="menuName" text="Menu C"/>
	</s:FormItem>
	<s:FormItem label="Item 1">
		<s:TextInput id="item1" text="Menu C1"/>
	</s:FormItem>
	<s:FormItem label="Item 2">
		<s:TextInput id="item2" text="Menu C2"/>
	</s:FormItem>
	<s:FormItem label="Item 3">
		<s:TextInput id="item3" text="Menu C3"/>
	</s:FormItem>
</s:Form>
</s:Application>


6.使用XMLListCollection作为数据源
private function createAndShow():void {
	var myMenu1:Menu = Menu.createMenu(null, hero, true);
	myMenu1.show(10, 10);

	var myMenu2:Menu = Menu.createMenu(null, capitalColl, true);
	myMenu2.show(10, 10);
}
<fx:Declarations>
<fx:XML id="hero">
	<root>
		<Heros label="Atlantis">
			<hero label="hero1" value="test1"/>
			<hero label="hero2" value="test2"/>
			<hero label="hero3" value="test3"/>
		</Heros>
		<Heros label="Commander">
			<hero label="hero5" value="test5"/>
			<hero label="hero6" value="test6"/>
			<hero label="hero7" value="test7"/>
		</Heros>
	</root>
</fx:XML>
<!-- Create an XMLListCollection representing the Tree nodes.
capitals.Capitals is an XMLList with both Capitals elements. -->
<s:XMLListCollection id="capitalColl" source="{hero.Heros}"/>
</fx:Declarations>

7.menu css
Menu
{
font-size:12;
font-family:Verdana;
fontWeight: normal;
skin: ClassReference(null);/*把預設skin設為null*/
cornerRadius: 5;
borderThickness:1;
rollOverColor: #4D89EB;
selectionColor: #4D89EB;
textRollOverColor: #FFFFFF;
textSelectedColor: #FFFFFF;
borderThickness: 1;
}

MenuItem
{
cornerRadius: 5;
rollOverColor: #4D89EB;
selectionColor: #4D89EB;
textRollOverColor: #FFFFFF;
textSelectedColor: #FFFFFF;
borderThickness: 1;
fontSize:8;
themeColor: #c1c1c1;
}
  • 大小: 2.2 KB
分享到:
评论

相关推荐

    dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu

    这个"dh.rar_flex cool me_flex menu skin_flex 导航_flex4 menu_flex4 menu"的压缩包文件,显然是与Flex4相关的资源,特别是关于创建酷炫的菜单导航和皮肤设计。 在Flex4中,菜单(Menu)是一种常见的用户界面元素...

    flex-menu.rar_Flex 4_Menu_flex_flex Menu_flex 菜单

    这个"flex-menu.rar"压缩包包含了一个使用Flex 4构建的菜单组件,专为Flash Builder 4设计。Flash Builder 4是基于Eclipse IDE的开发工具,用于创建、测试和调试Flex和ActionScript项目。 Flex 4中的菜单系统是用户...

    flex 竖排Menu

    本主题将深入探讨如何实现一个“竖排Menu”在Flex中的应用,以此来满足非传统布局的需求。 标题“flex 竖排Menu”指的是在Flex环境中创建一个垂直排列的菜单条。默认情况下,Flex的MenuBar组件是水平布局的,但通过...

    Flex4_Menu和List的使用源码

    在Flex4中,`Menu`和`List`是两种重要的组件,它们被广泛用于构建用户界面,提供下拉菜单和列表展示数据的功能。本实例深入探讨了如何在Flex4环境中有效地利用这两个组件。 首先,`Menu`组件在Flex中常用于创建下拉...

    Flex开发Android 更改ViewMenu外观

    在本主题中,我们将深入探讨如何使用Flex来更改ViewMenu的外观,这对于提升应用程序的用户体验至关重要。首先,理解Flex的基本概念是必要的。Flex是Adobe Air的一部分,它提供了一个基于ActionScript的组件模型和...

    Flex 实现右键菜单

    在Flex开发中,右键菜单是一项常见的功能需求,它能够为用户提供更为丰富的交互体验。本文将深入探讨如何在Flex环境中实现自定义的右键菜单,包括屏蔽浏览器的默认右键菜单,创建XML格式的多级菜单,以及设置菜单...

    create menu for flex .

    ### 创建Flex中的右键菜单 在Flex开发过程中,创建自定义的右键菜单是一项非常实用的功能,它能够为用户提供更多的交互选项。本文将基于提供的代码片段来详细解释如何在Flex项目中实现一个基本的右键菜单功能。 ##...

    flex常用动态菜单

    在Flex中,动态菜单通常使用`mx.controls.Menu`组件来实现。`Menu`组件可以作为下拉菜单或独立的弹出式菜单使用,其功能强大,可定制性强,非常适合创建各种动态菜单。 二、创建基本菜单 创建一个基本的Flex菜单...

    Flex 基于数据源的Menu Tree实现代码

    Flex中的Menu Tree是一种常见的UI组件,它用于呈现层次结构的数据,通常用于构建应用程序的菜单或者导航结构。在本文中,我们将探讨如何使用Flex创建一个基于数据源的Menu Tree,特别是如何利用外部参数来指定数据源...

    Flex List DataGrid Menu 拖动技术

    ### Flex中的List、DataGrid与Menu拖动技术详解 在Flex框架中,用户交互和数据展示是极其重要的组成部分。为了增强用户体验,Flex提供了多种控件,包括`List`、`DataGrid`和`Menu`等,这些控件支持丰富的用户交互...

    Flex自定义右键菜单

    在Flex SDK中,`mx.controls.Menu`类是用于创建菜单的基本元素。它支持创建多级菜单,并且可以与按钮、列表等其他组件关联。要创建一个右键菜单,我们需要监听鼠标右键点击事件,然后动态显示或隐藏菜单。 1. **...

    flex自定义多级系统菜单

    总之,“flex自定义多级系统菜单”涉及到的主要知识点有:XML数据绑定、Flex组件(如`Menu`和`MenuBar`)、数据源管理、事件处理以及可能的图形资源加载。通过这些技术,我们可以构建出灵活且易于维护的多级菜单系统...

    Flex创建弹出菜单(PopUpButton/Menu/PopMenuButton)

    本篇文章将深入探讨如何在Flex中创建弹出菜单,包括PopUpButton、Menu和PopMenuButton组件的使用。这些组件使得用户界面更加交互友好,提供了下拉式菜单的功能,通常用于显示一系列相关的操作选项。 首先,`...

    Flex添加右键菜单

    在Flex开发中,有时我们需要为用户界面添加自定义的右键菜单,以便提供更多的交互功能。本教程将指导你如何在Flex项目中实现这一功能,主要涉及以下知识点: 1. **右键菜单库的引入**: 首先,你需要下载一个名为`...

    flex自定义右键菜单 完全屏蔽

    在Flex开发中,右键菜单的自定义与屏蔽是一项常见的需求。标题提到的"flex自定义右键菜单 完全屏蔽"是指在Flex应用程序中,不仅实现对默认右键菜单的完全屏蔽,还允许开发者根据自己的需求创建并应用自定义的右键...

    Flex创建菜单栏

    在IT行业中,Flex是一种基于ActionScript 3.0和Flash Player的开源框架,主要用于构建富互联网应用程序(RIA)。本文将详细讲解如何使用Flex来创建一个菜单栏,这是一项基础但重要的用户界面设计任务。 首先,我们...

    30多个 flex3 源码(整理)

    8. **Menu样式**:Flex的Menu组件可以自定义样式,包括字体、颜色、边距等。通过CSS或MXML可以调整菜单项的布局和视觉效果,实现不同的主题风格。 9. **图表 柱状图 黄色/红色**:柱状图是另一种常见的数据可视化...

    支持火狐IE9的flex右键

    3. **创建自定义菜单**:在Flex中创建自定义的弹出菜单组件,这可以通过`mx.controls.Menu`类来实现。将需要的菜单项添加到菜单中,并在右键点击事件触发时显示它。 ```actionscript var menu:Menu = new Menu(); ...

    Flex button和buttonBar的操作

    至于提供的`Menu.fla`和`Menu.swf`文件,它们很可能是Flex项目的源文件和编译后的SWF文件。`fla`文件是Adobe Flash的专业编辑格式,包含了所有的图形、动画和交互逻辑;而`swf`文件是最终发布到Web上的可执行文件,...

    flex-right-click.rar_flex_flex right

    在本文中,我们将深入探讨如何在Flex应用中实现右键点击功能,并且结合"flex-right-click.rar_flex_flex right"这一标题,我们可以推断这是一个关于在Flex项目中添加右键菜单并支持增删操作的示例。Flex是一种基于...

Global site tag (gtag.js) - Google Analytics