你对Flex效果组件的概念是否了解,这里和大家分享一下几个常见的Flex效果,我们可以通过设置repeatCount属性和repeatDelay属性,来分别控制效果播放的次数和重复播放效果的时间间隔(以毫秒为单位)。
Flex效果组件
Flex中提供了丰富的效果组件。由于效果是一种根据时间渐变的过程,因此所有效果都具有duration属性,用来设置播放时间(以毫秒为单位)。也可以通过设置repeatCount属性和repeatDelay属性,来分别控制效果播放的次数和重复播放效果的时间间隔(以毫秒为单位)。如果希望在触发器被触发后,延迟一段时间调用效果,可以使用startDelay属性。
1)Flex效果组件之Glow发光效果
Glow是一种发光效果,该效果使用了flash.filters.GlowFilter滤镜类。如果对某个组件应用了Glow效果,就不能对该组件应用GlowFilter滤镜,也无法再次应用Glow效果。下面的代码通过Image对象的mouseDownEffect触发器触发Glow效果:
- <mx:Glowidmx:Glowid="glowImage"duration="1000"alphaFrom="1.0"
- alphaTo="0.3"
- blurXFrom="0.0"blurXTo="50.0"blurYFrom="0.0"
- blurYTo="50.0"color="0x00FF00"/>
- <mx:Imagesourcemx:Imagesource="assets/plane.png"
- mouseDownEffect="{glowImage}"/>
2)Flex效果组件之Iris虹效果
Iris效果通过扩展或收缩集中在目标上的矩形遮罩为效果目标设置动画。该效果可以从目标的中心放大遮罩来显示目标,也可以向中心收缩遮罩来隐藏目标。下面的代码使用一个CheckBox对象设置Image的visible属性,通过hideEffect和showEffect触发器分别触发各自的Iris效果:
- <mx:Irisidmx:Irisid="irisOut"duration="1000"showTarget="true"/>
- <mx:Irisidmx:Irisid="irisIn"duration="1000"showTarget="false"/>
- <mx:Imageidmx:Imageid="Flex"source="assets/plane.png"visible="{cbx.selected}"
- showEffect="{irisIn}"hideEffect="{irisOut}"/>
- <mx:CheckBoxidmx:CheckBoxid="cbx"label="visible"selected="true"/>
3)Flex效果组件之Move移动效果
Move效果用来实现移动动画。在给定时间内,组件的位置会随时间变化而变化。使用该效果通常需要用到以下几个属性。
lxFrom和yFrom属性用来指定初始位置。
lxTo和yTo属性用来指定目标位置。
lxBy和yBy用来指定移动量,即组件在x轴向和y轴向上的移动速度。
通常只需要指定初始位置、目标位置或移动量这些值中的任意2个,Flex就会计算第3个值。如果指定所有这3个值,Flex就会忽略xBy和yBy值。如果仅指定xTo和yTo值或xBy和yBy值,那么Flex会将xFrom和yFrom设置为对象的当前位置。
下面的程序演示了如何使用Move效果。
代码清单MoveSample.mxml
- <?xmlversionxmlversion="1.0"?>
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"paddingLeft=
- "0"
- layout="absolute"mouseDown="moveImage();">
- <mx:Script>
- <![CDATA[
- //当按下鼠标时调用该事件
- privatefunctionmoveImage():void{
- //停止播放Move效果
- moveEffect.end();
- //设置目标位置
- moveEffect.xTo=mouseX;
- moveEffect.yTo=mouseY;
- //播放Move效果
- moveEffect.play();
- }
- ]]>
- </mx:Script>
- <mx:Moveidmx:Moveid="moveEffect"target="{img}"/>
- <mx:Imageidmx:Imageid="img"source="assets/plane.png"/>
- </mx:Application>
代码中将Application的layout属性设置为absolute,当用户在应用程序中任何位置上单击鼠标时,调用moveImage方法,该方法中首先停止Move效果,然后根据鼠标单击的位置设置目标位置,最后播放效果。
通常Move效果应用于使用绝对定位的容器(如Canvas)或使用“layout=absolute”的容器(如Application或Panel)中。如果需要将其应用到自动布局的容器(如VBox或Grid容器)中,虽然会移动目标对象,但下次容器更新其布局时,会将目标对象移回其原始位置。在这种情况下,可以将容器的autoLayout属性设置为false来禁止往回移动,但这会禁用容器中所有控件的布局。
4)Flex效果组件之Pause暂停效果
Pause效果可以实现在指定时间段内不执行任何操作的功能。如果将Pause效果添加为Sequence效果的子项,可以创建2个其他效果之间的暂停。
【编辑推荐】