`
strugglesMen
  • 浏览: 115190 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex tween 小原理

阅读更多
本文来源于 冰山上的播客 http://xinsync.xju.edu.cn , 原文地址:http://xinsync.xju.edu.cn/index.php/archives/1304


在Flex里面不像在Flash里面随意制作动画了,Flex更趋向于应用程序,而不是动画制作了,所以没有了时间轴的概念。在Flex中使用动画效果, 可以用Flex自带的Effect,或者自已定制Effect,因为很多人都想借Flash里面的一样操作Flex,比如在Flash里面做一个动态按钮 很容易,当鼠标移动到上面时,会有很多发光的点跑出来(荧火虫效果),这种效果在Flash十分容易实现,但在Flex里面要实现这种效果就不是那么简单 的了,下面说说在Flex里的的动务效果的使用与自定义制作。
首先介绍一下Flex里面的自带的效果有以下几种:
Blur         模糊效果
Move         移动效果
Fade         淡入淡出效果
Glow         发光效果
Resize         调整大小效果
Rotate         旋转效果
Zoom         缩放效果
WipeLeft 用遮罩实现画面收放效果,下同,分别为不同方向
WipeRight
WipeUp
WipeDown
不同的效果所需要设置的属性也不一样,比如Blur效果需要设置它的X与Y轴的模糊像素
<mx:Blur id=”blur” blurXFrom=”0″ blurXTo=”10″ />
而Move效果需要设置移动的位置信息
<mx:Move id=”moveEffect” xFrom=”-100″ />
其它设置可以参考Flex语言参考
下面说说如何使用这些效果。要运行这些效果有两种方法:一种是调用该效果的play()方法,另外一种是使用触发器来触发效果。
(1)使用play()方法:
先看效果:在线播放
以下代码:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”>
<mx:Script>
<![CDATA[
private function onClick(event:Event):void {
be.target = event.currentTarget;
be.play( );
}
]]>
</mx:Script>
<mx:Blur id=”be” blurXTo=”50″ blurYTo=”50″ duration=”1000″ />
<mx:Panel id=”p” width=”200″ height=”180″ click=”onClick(event)” />
</mx:Application>
在 代码中看到,要使用效果,先定好一个效果,如上面的<mx:Blur …>该标签就是模糊效果的MXML标签,定好效果后在Panel的点击事件里再对该效果进行一些设置,如be.target = event.currentTarget 设置该效果将要应用到的目标组件(Component),之后再调用play()方法后,该效果就会应用在Panel上面播放!
(2)使用触发器播放效果:
使用触发器播放效果的话,可以不用写ActionScript代码,直接在组件的效果触发器上指明使用哪个效果就可以了,比较简单明了,但就不能进行更多的属性定制,而用AS控制播放的话,可以对效果进行很多的设置再相应根据情况播放,先看看触发器播放的代码:
以下代码:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”>
<mx:Blur id=”be” blurXTo=”50″ blurYTo=”50″ duration=”2000″ />
<mx:Panel id=”p” width=”200″ height=”180″ creationCompleteEffect=”{be}” />
</mx:Application>
看以上代码,先写好了Blur的效果并设置好属性后,duration=”2000″这个是播放的时间以毫秒为单位。
在Panel标签里有这样一句:creationCompleteEffect=”{be}” 这个就是触发器,是该Panel组件的效果触发器,当Panel组件加载完成时,会由系统自动调用该效果触发器,触发器里面指了触发 be 这个Blur效果
在Flex里面还有很多触发器如:
addedEffect                          被添加进容器时触发效果
removedEffect                     被从容器中移除时触发效果
creationCompleteEffect 被创建成功时触发效果
focusInEffect                         获得焦点时触发
focusOutEffect                      失去焦点时触发
hideEffect                              被隐藏时(visible=false)触发
showEffect                             被显示时(visible=true)触发
rollOverEffect                     鼠标经过时触发
rollOutEffect                      鼠标离开时触发
mouseDownEffect             鼠标按下时触发
mouseUpEffect                 鼠标松开时触发
moveEffect                          被移动时触发
resizeEffect                         被重整大小时触发
注 意:这些都是效果触发器,不要与事件触发器混乱了。事件触发器是rollOver,事件触发器与效果触发器差不多,事件触发器是当用户执行相就操作时触发 事件,将会调用自定的事件触发处理函数,而效果触发器是执行相应操作时被触发并由系统自动调用所定的效果的play()方法。
现在说说效果的一些其它属性:
每个效果都有reverse( )方法,该方法是反向播放,原本由小到大的变化,而调用reverse( );后再运行play()的话,效果将会从大到小进行播放。
但要注意的一点是,reverse( )方法不会自动播放,即是单单调用reverse( );的话,效果并不会播放,他只会记录该效果为倒转,而要再调用play()后倒转效果才会开始播放。而调用pause( )与resume( )就是暂停与继续播放效果
startDelay这个属性是设置效果的播放延时,以毫秒为单位,即要等待多少毫秒后效果才开始播放,如:
<mx:Blur id=”be” blurXTo=”50″ startDelay=”3000″ />
该模糊效果将会在调用play()之后3秒才开始播放
repeatCount这个属性是设置效果的重复次数,默认为1,设置为0的话就是不停循环播放
<mx:Blur id=”be” blurXTo=”50″ startDelay=”3000″ repeatCount=”5″ />
每个效果都有两个事件:effectStart 与 effectEnd
你可以在该效果事件的处理函数里面对效果作相应的操作,如:
<?xml version=”1.0″ encoding=”utf-8″?> 
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”> 
<mx:Script> 
<![CDATA[ 
import mx.events.EffectEvent; 
public function onEffEnd(e:EffectEvent):void{ 
e.effectInstance.reverse(); 
e.effectInstance.play(); 
} 
]]> 
</mx:Script> 
<mx:Blur id=”be” blurXTo=”50″ blurYTo=”50″ duration=”2000″ /> 
<mx:Panel id=”p” width=”200″ height=”180″ creationCompleteEffect=”{be}” effectEnd=”onEffEnd(event)” /> 
</mx:Application> 

当效果播放完时,系统将会自动触发effectEnd事件,在处理函数里面,将该效果Instance即现时播放的效果实例进行倒转并播放,当播放完,又会触发effectEnd事伯,这样一直循环!
现在再来说说效果的组合:
通常如果你觉得只应用一个效果很单调的话,可以进行效果组合应用,即多个效果同时播放或者顺序播放,
如, 当加载页面时,你想Panel先模糊到一定程度,再将Panel移动到某个位置,再把Panel还原成原来的清淅度(即消退模糊)。这样分析一下,一共用 了三个效果,一,先应用Blur(由清至模)效果,当Blur完成时,再应用Move效果,当Move完成时,再应用另外一个Blur(由模至清)效果。 这样三个效果组合就是按顺序组合,先后运行。先来看看效果:在线播放
再来看看代码:
<?xml version=”1.0″ encoding=”utf-8″?> 
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”> 
<mx:Sequence id=”sequenceEffect”> 
<mx:Blur id=”beOut” blurXTo=”50″ blurYTo=”50″ duration=”500″ /> 
<mx:Move id=”mv” xTo=”200″ yTo=”150″ duration=”500″ /> 
<mx:Blur id=”beIn” blurXFrom=”50″ blurYFrom=”50″ blurXTo=”0″ blurYTo=”0″ duration=”500″ /> 
</mx:Sequence> 
<mx:Panel id=”p” width=”200″ height=”180″ mouseDownEffect=”sequenceEffect” /> 
</mx:Application> 

看以上代码,<mx:Sequence id=”sequenceEffect”>标签就是顺序组合效果标签,当应用sequenceEffect效果的时候,它会按顺序播放该标签里面的三个子效果。
另外的就是同时播放了,
<mx:Parallel id=”parallelEffect”> 
<mx:Blur id=”beOut” blurXTo=”50″ blurYTo=”50″ duration=”500″ /> 
<mx:Move id=”mv” xTo=”200″ yTo=”150″ duration=”500″ /> 
</mx:Parallel> 

这 个<mx:Parallel>标签就是同时播放的效果标签,放在它里面的子效果都会同时播放,即一边模糊一边移动。这个都可以自由组合,<mx:Parallel>与 <mx:Sequence>标签都可以自由组合,例如先按顺序先播放模糊,再同时播放移动与隐藏等。这里就不多说了。
使用Flex自带的效果基本用法就这些,下篇文章将讨论自定义效果的制作,将会详细说说这篇文章上面说到的 effectInstance 即实例与工厂的概念。
分享到:
评论

相关推荐

    精通FLEX源代码08

    8. **动画和效果**:Flex提供了一系列的动画和效果工具,如Tween类和Effect类,能够为应用程序添加丰富的视觉反馈。 9. **部署与优化**:学习如何打包和部署Flex应用,以及优化性能,包括减少SWF大小、优化网络通信...

    AS3.0中Tween类的基础

    Tween(补间)技术是基于时间线的动画原理,通过计算两个关键帧之间的变化来创建连续的动画过渡。下面我们将详细探讨AS3.0中Tween类的基础知识。 首先,Tween类并不是AS3.0的标准库中的直接成员,而是由第三方库如...

    Flex 3D标签云

    7. **动画和时间线**:利用`flash.display.Tween`类或者`flash.events.EventDispatcher`实现平滑的动画过渡效果。 8. **数据绑定**:将标签云的数据源与外部数据集关联,例如XML或JSON文件,动态更新标签内容和数量...

    flex 流程图 源码

    Flex是一种基于ActionScript和Flash Player的开源框架,用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据...通过学习和分析这个源码,开发者可以深入理解Flex的编程模式和流程图的实现原理。

    flex环境实现小人走路(8个方面)

    这可能涉及` Tween`类,它可以平滑地改变对象的属性值,比如使用`TweenMax`库进行时间轴控制。 4. **帧率控制**: 动画的流畅性取决于帧率,我们可以通过调整`stage.frameRate`来设定每秒播放的帧数。合理设置帧率...

    Flex翻书特效 OpenBook

    本文将深入探讨Flex翻书特效的相关知识点,包括Flex的基本概念、实现翻书特效的技术原理以及如何使用Flex Builder进行开发。 Flex是由Adobe公司开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用...

    Foundation_flex_for_designers中文版

    《Foundation Flex for Designers》是一本专为设计师打造的Adobe Flex学习指南,旨在帮助设计师们掌握Flex技术,从而能够创建...通过学习和实践,设计师能够掌握Flex的基本原理和技巧,为构建高质量的RIA打下坚实基础。

    Flex Canvas 精灵演示

    4. **动画原理**:通过改变精灵的位置、旋转角度、缩放比例等属性,可以创建出各种动画效果。这些属性可以通过时间轴控制或使用Tween类进行平滑过渡。 5. **事件处理**:精灵和Canvas都可以监听和处理用户交互事件...

    flex 特效demo

    通过这些demo,开发者可以深入理解Flex特效的工作原理,学习如何使用Flex SDK中的类库和API来实现这些效果。 首先,让我们来看看Flex中的动画机制。在Flex中,我们可以使用Animate类来创建基本的动画效果。例如,平...

    Flex 逼真海洋效果

    - **Tween** 类:Flex提供了一些内置的Tween类,如SimpleMotionPath和MotionPath,可以用于平滑地改变对象的属性,如位置、大小或颜色,实现海浪的起伏效果。 - **ENTER_FRAME 事件**:监听这个事件,可以在每一帧...

    flex中文帮助文档

    本压缩包包含的“flex中文帮助文档”是针对Flex开发者的重要参考资料,旨在帮助用户深入理解Flex的工作原理,掌握其开发方法。 在Flex中,核心概念包括MXML和ActionScript。MXML是一种声明式语言,主要用于定义用户...

    FLEX4-instance.rar_flex_flex4

    通过学习这些实例,开发者可以深入理解Flex 4中时间组件的工作原理,并能够有效地将其应用于实际项目中,提高应用程序的交互性和用户体验。此外,掌握这些知识也有助于提升开发者在RIA领域的专业技能,适应不断变化...

    Flex 4 进度条的皮肤

    - 动画效果:如果你希望在进度改变时有平滑的过渡,可以使用动画类如`Tween`或`Animate`来实现。 - 角落圆角:通过设置`&lt;s:Rect&gt;`的`cornerRadius`属性,可以给进度条的轨道和滑块添加圆角效果。 3. **使用自定义...

    flex 超炫组件 coverflow 组件源码

    3. **动画处理**:Flex提供了强大的Tween类和Timeline类来实现平滑的动画效果。Coverflow组件的翻转效果可能是通过这些类来实现的。 4. **数据绑定**:Flex中的数据绑定允许组件属性与应用程序数据模型动态关联。...

    Flex in Action

    《Flex in Action》是Manning出版社推出的一本关于Adobe Flex技术的专业书籍,属于其知名的"In Action"系列。...尽管该书发布时间较早,但Flex的核心原理和许多实践经验仍然对当前的RIA开发有着重要的参考价值。

    Flex 扇形Loading

    本文将深入探讨Flex中的扇形Loading的实现原理、自定义方法以及相关技术点。 1. **Flex基础知识**:Flex是一个基于ActionScript和Flash Player的开放源代码框架,用于构建富互联网应用程序(RIA)。它提供了一套...

    Flex常用教程及库

    标签中的"源码"可能暗示了这个压缩包包含了一些示例代码或项目源文件,这对于初学者理解Flex的工作原理和实践编程技巧至关重要。"工具"可能指的是与Flex开发相关的辅助软件或库,例如FlexUnit(单元测试框架)、 ...

    flex特效dome

    在本篇文章中,我们将深入探讨Flex特效的原理、应用场景以及如何利用EffectsCtrlDemo这个项目进行实践。 Flex是Adobe公司推出的一种基于XML的标记语言,用于构建富互联网应用程序(Rich Internet Applications,...

    Flex教程(PPT).rar

    理解组件的工作原理和自定义组件的方法是Flex开发的关键技能。 4. **数据绑定**:Flex中的数据绑定机制允许开发者将用户界面元素与应用程序数据模型轻松关联,实现数据驱动的界面更新。 5. **事件处理**:学习如何...

    flex3D特效

    同时,通过实际运行和调整参数,可以深入掌握这些特效的工作原理,并从中学习如何利用Flex和ActionScript 3.0创造独特的用户体验。 总的来说,这个Flex项目对于那些希望提升自己在3D界面设计和高级特效制作方面技能...

Global site tag (gtag.js) - Google Analytics