四種常見Flex效果組件用法解析
你對Flex效果組件的概念是否了解,這里和大家分享一下幾個常見的Flex效果,我們可以通過設置repeatCount屬性和repeatDelay屬性,來分別控制效果播放的次數(shù)和重復播放效果的時間間隔(以毫秒為單位)。
Flex效果組件
Flex中提供了豐富的效果組件。由于效果是一種根據時間漸變的過程,因此所有效果都具有duration屬性,用來設置播放時間(以毫秒為單位)。也可以通過設置repeatCount屬性和repeatDelay屬性,來分別控制效果播放的次數(shù)和重復播放效果的時間間隔(以毫秒為單位)。如果希望在觸發(fā)器被觸發(fā)后,延遲一段時間調用效果,可以使用startDelay屬性。
1)Flex效果組件之Glow發(fā)光效果
Glow是一種發(fā)光效果,該效果使用了flash.filters.GlowFilter濾鏡類。如果對某個組件應用了Glow效果,就不能對該組件應用GlowFilter濾鏡,也無法再次應用Glow效果。下面的代碼通過Image對象的mouseDownEffect觸發(fā)器觸發(fā)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觸發(fā)器分別觸發(fā)各自的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效果用來實現(xiàn)移動動畫。在給定時間內,組件的位置會隨時間變化而變化。使用該效果通常需要用到以下幾個屬性。
lxFrom和yFrom屬性用來指定初始位置。
lxTo和yTo屬性用來指定目標位置。
lxBy和yBy用來指定移動量,即組件在x軸向和y軸向上的移動速度。
通常只需要指定初始位置、目標位置或移動量這些值中的任意2個,F(xiàn)lex就會計算第3個值。如果指定所有這3個值,F(xiàn)lex就會忽略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效果可以實現(xiàn)在指定時間段內不執(zhí)行任何操作的功能。如果將Pause效果添加為Sequence效果的子項,可以創(chuàng)建2個其他效果之間的暫停。
【編輯推薦】