`

Flex菜单弹跳效果

    博客分类:
  • Flex
阅读更多
一个很简单的单击效果(弹跳,选中时加下划线),可适用于菜单单击,将下面代码作为MenuItemRenderer。实现这个效果无非就是使用了Move3D。(选自FlexViewer)
<?xml version="1.0" encoding="utf-8"?>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
				xmlns:s="library://ns.adobe.com/flex/spark"
				xmlns:mx="library://ns.adobe.com/flex/mx"
				xmlns:components="com.components.*"
				implements="mx.managers.IFocusManagerComponent"
				buttonMode="true"
				focusEnabled="true"
				useHandCursor="true" 
				click="itemClickHandler(event)">
	
	<fx:Declarations>
		<s:Move3D id="moveEffect" duration="200" effectEnd="moveEffectEndHandler(event)" repeatBehavior="reverse" repeatCount="2" target="{icon}" yBy="-8" yFrom="0"/>
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.events.EffectEvent;
			import mx.events.FlexEvent;
			
			/**
			 * 是否打开标识 
			 */
			private var isOpen:Boolean = false;
			
			
			/**
			 * 数据更改时触发函数,如果作为菜单的ItemRenderer时,监听DataChangeEvent。否则要外部调用执行。以便实现窗口关闭还原状态
			 */
			public function itemrenderer_dataChangeHandler(open:Boolean):void
			{
				//itemrenderer_dataChangeHandler(event:CustomEvent):void
				//作为renderer时,派发自定义事件,data属性中设置open状态,直接赋值即可。
//				icon.source = event.data.icon;
//				underline.open = event.data.open;
			
				underline.open = open;
			}
			
			
			/**
			 * 鼠标移出事件处理 
			 */
			private function mouseOutHandler(event:MouseEvent):void
			{
				//执行鼠标移出处理
			}
			
			/**
			 * 鼠标移上事件处理 
			 */
			private function mouseOverHandler(event:MouseEvent):void
			{
				//执行鼠标移上处理
			}
			
			/**
			 * 单击事件处理函数 
			 */
			private function itemClickHandler(event:MouseEvent):void
			{
				if ( !isOpen )
				{
					moveEffect.end();
					moveEffect.play();
					underline.open = isOpen = true;
				}
			}
			
			/**
			 * 单击时效果渲染完毕 处理函数 
			 */
			private function moveEffectEndHandler(event:EffectEvent):void
			{
				//执行单击操作
			}
			
			//--------------------------------------------------------------------------
			//
			//  Focus Management
			//
			//--------------------------------------------------------------------------
			
			/**
			 * 获取焦点,可在此函数中通过焦点来执行鼠标移上移出处理。 
			 */
			override public function drawFocus(isFocused:Boolean):void
			{
				super.drawFocus(isFocused);
				
				// Popup the tooltip or remove the menu
				if (isFocused)
				{
					mouseOverHandler(null);
				}
				else
				{
					mouseOutHandler(null);
				}
			}
			
			
			/**
			 * 空格事件处理,按下空格键派发Click事件 
			 */
			private var keyboardPressed:Boolean = false;
			
			override protected function keyDownHandler(event:KeyboardEvent):void
			{
				if (event.keyCode != Keyboard.SPACE)
				{
					return;
				}
				
				keyboardPressed = true;
				event.updateAfterEvent();
			}
			
			override protected function keyUpHandler(event:KeyboardEvent):void
			{
				if (event.keyCode != Keyboard.SPACE)
				{
					return;
				}
				
				if (enabled && keyboardPressed)
				{
					// Mimic mouse click on the button.
					keyboardPressed = false;
					dispatchEvent(new MouseEvent(MouseEvent.CLICK));
				}
				event.updateAfterEvent();
			}
		]]>
	</fx:Script>
	
	<s:VGroup width="50" height="30" gap="2" horizontalAlign="center" verticalAlign="middle">
		<s:Image id="icon" source="@Embed('assets/images/icons/i_clock.png')" width="25" height="25" buttonMode="true" 
				 mouseOut="mouseOutHandler(event)" mouseOver="mouseOverHandler(event)" smooth="true" useHandCursor="true"/>
		<components:Underline id="underline"/>
	</s:VGroup>
	
</s:VGroup>


Underline
<?xml version="1.0" encoding="utf-8"?>
<!-- 

	绘制线段

-->
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Script>
        <![CDATA[
            [Bindable]
            public var open:Boolean = false;
        ]]>
    </fx:Script>
    <s:Line width="10" includeInLayout="{open}" visible="{open}">
        <s:stroke>
            <s:SolidColorStroke caps="square" color="0x000000" weight="2"/>
        </s:stroke>
    </s:Line>
</s:Group>
分享到:
评论

相关推荐

    flex常用动态菜单

    Flex提供了丰富的组件库,使得开发者能够轻松创建交互性强、视觉效果丰富的用户界面。本篇文章将详细探讨“flex常用动态菜单”的相关知识点。 一、Flex菜单组件 在Flex中,动态菜单通常使用`mx.controls.Menu`组件...

    FLEX 鱼眼菜单,点击菜单3D旋转效果切换页面

    在这个场景中,我们讨论的是一个使用FLEX实现的具有3D旋转效果的鱼眼菜单,当用户点击菜单项时,页面会以3D旋转的方式进行切换。 首先,我们需要了解FLEX布局的基础知识。FLEX布局允许开发者设置容器内的子元素如何...

    flex翻书效果 flex翻书效果

    Flex翻书效果是一种在网页或应用中实现模拟真实书籍翻页动画的技术,它利用了CSS3中的Flexbox布局模型和一些动态效果来创造出逼真的翻页体验。在现代Web开发中,这种效果常用于电子书、杂志或者产品展示等场景,以...

    flex发光、模糊、弹跳、放大特效

    图片的发光 、 模糊、 弹跳、 放大效果

    Flex创建菜单栏

    本文将详细讲解如何使用Flex来创建一个菜单栏,这是一项基础但重要的用户界面设计任务。 首先,我们需要理解Flex中的菜单栏组件。在Flex中,`MenuBar`类是用于创建顶部水平菜单的组件,它提供了类似于传统桌面应用...

    Flex 菜单导航特效 工程源码

    - 效果库:Flex SDK内含的Effect类库提供了许多预定义的动画效果,如Fade、Slide等,可以直接应用于菜单导航。 4. 源码分析: - MXML文件:主要负责界面布局,包括菜单栏的创建和菜单项的定义。 - ActionScript...

    Flex自定义右键菜单

    在Flex开发中,自定义右键菜单是一项常见的需求,它能为用户界面提供更丰富的交互体验。Flex是一款基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在这里,我们将深入探讨如何在Flex中实现...

    flex 图片轮播效果

    "flex 图片轮播效果"是指利用Adobe Flex这一开发框架来实现这种功能。Flex是一款基于ActionScript和MXML的开源工具,主要用于构建富互联网应用程序(RIA)。以下是对这个主题的详细讲解: 首先,Flex支持XML...

    Flex4 滑动菜单案例

    Flex4是一种基于ActionScript 3.0的框架,用于构建富互联网...通过深入理解这个案例,开发者不仅能掌握滑动菜单的实现,还能进一步了解Flex4的组件模型、事件处理和动画效果,为开发更复杂的RIA应用打下坚实的基础。

    flex-menu.rar_Flex 4_Menu_flex_flex Menu_flex 菜单

    在Flex 4中,菜单组件的使用极大地增强了用户体验,因为它们支持丰富的样式和动画效果,同时能够灵活地适应不同屏幕尺寸和设备。 菜单组件在Flex 4中主要由以下类组成: 1. MenuBar:这是主菜单栏,通常位于应用...

    Flex水波纹效果project

    Flex水波纹效果项目是一种基于Adobe Flex技术实现的动态视觉效果,主要应用于用户界面设计,为用户提供更加生动、直观的交互体验。Flex是基于ActionScript 3.0和MXML的开源框架,它允许开发者创建丰富的互联网应用...

    flex自定义多级系统菜单

    这个“flex自定义多级系统菜单”的话题,主要是关于如何在Flex中通过XML配置实现动态、多层次的菜单结构。 在Flex中,菜单通常由`Menu`或`MenuBar`组件来创建。然而,为了实现自定义的多级菜单,我们需要更深入地...

    Flex控件折叠效果

    - **导航菜单**:在复杂的应用中,折叠效果可以用于创建层次结构的导航菜单,使用户能够逐步探索内容。 - **设置面板**:在配置或设置界面中,折叠效果可以隐藏不常用或高级的选项,保持界面整洁。 - **内容展示*...

    Flex 3D切换效果

    这种效果通常用于导航菜单、卡片式布局或者像登录界面中的按钮点击反馈,为用户带来更加生动和沉浸式的交互体验。 Flex是一个基于ActionScript 3.0和Flash Player的开源开发框架,它允许开发者创建富互联网应用程序...

    flex3D菜单

    这个"flex3D菜单"项目显然利用了Flex的强大功能来创建一个具有三维效果的交互式菜单,该菜单能够跟随用户的鼠标移动,提供流畅的用户体验。在Flex中,3D效果通常通过Stage3D API实现,这是一个底层的硬件加速图形...

    flex实现右键菜单

    本话题我们将探讨如何使用Flex技术来实现一个自定义的右键菜单。Flex是一种基于ActionScript 3.0的开放源码框架,主要用于构建富互联网应用程序(RIA)。 首先,我们需要理解Flex的基本架构。Flex使用MXML和...

    Flex 实现右键菜单

    本文将深入探讨如何在Flex环境中实现自定义的右键菜单,包括屏蔽浏览器的默认右键菜单,创建XML格式的多级菜单,以及设置菜单出现位置的自适应策略。 首先,我们需要了解Flex屏蔽浏览器系统右键的基本方法。在...

    Flex右键菜单 flex tree 右键菜单 源码

    在Flex中,右键菜单是用户交互的重要组成部分,特别是在数据可视化和树形结构的数据展示中,如Flex Tree组件。本文将深入探讨如何在Flex中实现右键菜单,并结合提供的源码进行分析。 1. Flex右键菜单: Flex中的...

    flex 左右分栏 效果

    "flex 左右分栏 效果"是指使用Flex布局将页面内容分为左右两部分,这样的布局在很多网页设计中都非常常见,如导航菜单、内容展示等场景。下面我们将深入探讨Flex布局以及如何实现左右分栏效果。 1. **Flex布局基础*...

    flex 鱼眼菜单项目下载

    flex 鱼眼菜单flex 鱼眼菜单flex 鱼眼菜单flex 鱼眼菜单

Global site tag (gtag.js) - Google Analytics