Flex中提供了豐富的效果組件。由於效果是一種依據時間漸變的過程,所以所有效果都具備duration屬性,用來設置播放時間(以毫秒爲單位)。也可以經過設置repeatCount屬性和repeatDelay屬性,來分別控制效果播放的次數和重複播放效果的時間間隔(以毫秒爲單位)。假設但願在觸發器被觸發後,延遲一段時間調用效果,可以使用startDelay屬性。html
1)Flex特效之AnimateProperty動畫效果ide
AnimateProperty是用來爲組件的屬性或樣式設置動畫的效果。咱們可以經過其property屬性設定目標對象上需要設置動畫效果的屬性,而後設置fromValue屬性和toValue屬性,爲效果提供屬性的起始值和結束值。好比如下的代碼使用mouseDownEffect觸發器,當單擊圖片時,觸發AnimateProperty效果,在1秒鐘內,Image對象的scaleX屬性由1變爲2,被橫向拉伸。代碼例如如下:函數
1. <mx:AnimateProperty idmx:AnimatePropertyid="animateProperty"property="scaleX"fromValue="1 oop
2. 佈局
3. "toValue="2" 字體
4. 動畫
5. duration="1000"/> spa
6. xml
7. <mx:Imageidmx:Imageid="img"source="assets/plane.png"mouseDownEffect="{animateP htm
8.
9. roperty}"/>
10.
假設但願經過樣式設置效果,可以將isStyle屬性設置爲ture,而後經過setStyle()方法設置目標對象的樣式,從而達到設置效果的目的。
2)Flex特效之Blur模糊效果
Blur是一種模糊效果。該效果使用了flash.filters.BlurFilter濾鏡,假設對某個組件應用了Blur效果,就不能再對該組件應用BlurFilter濾鏡,也沒法再次應用Blur效果。如下的代碼經過Image對象的mouseDownEffect觸發器觸發Blur效果,在1秒鐘內,Image對象將逐漸變得模糊。代碼例如如下:
1. <mx:Bluridmx:Blurid="blurImage"duration="1000"blurXFrom="0.0"blurXTo="10.0"
2.
3. blurYFrom="0.0"blurYTo="10.0"/>
4.
5. <mx:Imageidmx:Imageid="img"source="assets/plane.png"mouseDownEffect="{blurImage}"/>
3)Flex特效之Dissolve溶解效果
Dissolve是一種溶解效果。當效果開始播放時,將建立一個不透明的矩形,這個矩形懸浮在目標組件的上方,它的顏色由Dissolve.color屬性設置,此時透明度爲「1.0-Dissolve.alphaFrom」。隨着效果的播放,該矩形的alpha屬性將從(1.0-alphaFrom)逐漸變爲「1.0–alphaTo」,直到效果播放完畢,矩形被銷燬。
假設目標對象是一個容器,那麼Dissolve效果將應用於容器內部的內容區域。
如下的代碼使用一個CheckBox對象設置Image的visible屬性,經過hideEffect和showEffect觸發器分別觸發各自的Dissolve效果:
6. <mx:Dissolveidmx:Dissolveid="dissolveOut"duration="1000"alphaFrom="1.0"alphaTo="0
7.
8. .0"/>
9.
10. <mx:Dissolveidmx:Dissolveid="dissolveIn"duration="1000"alphaFrom="0.0"alphaTo="1.
11.
12. 0"/>
13.
14. <mx:CheckBoxidmx:CheckBoxid="cbx"label="visible"selected="true"/>
15.
16. <mx:Imagesourcemx:Imagesource="assets/plane.png"visible="{cbx.selected}"
17.
18. hideEffect="{dissolveOut}"showEffect="{dissolveIn}"/>
4)Flex特效之Fade淡入淡出效果
Fade是一種淡入淡出效果,它經過設置組件的alpha屬性來實現動畫效果。當使用showEffect或hideEffect觸發器設置Fade效果時,假設省略了alphaFrom和alphaTo屬性的值,那麼在showEffect觸發器上目標對象的透明度將從0變化到目標的當前alpha值,而在hideEffect觸發器上則會從當前的alpha值變化到0。假設要對字體使用Fade效果,必須使用嵌入字體。
如下的代碼使用一個CheckBox對象設置Image的visible屬性,經過hideEffect和showEffect觸發器分別觸發各自的Fade效果:
1. <mx:Fadeidmx:Fadeid="fadeOut"duration="1000"alphaFrom="1.0"alphaTo="0.0"/>
2.
3. <mx:Fadeidmx:Fadeid="fadeIn"duration="1000"alphaFrom="0.0"alphaTo="1.0"/>
4.
5. <mx:CheckBoxidmx:CheckBoxid="cbx"label="visible"selected="true"/>
6.
7. <mx:Imagesourcemx:Imagesource="assets/plane.png"visible="{cbx.selected}"
8.
9. hideEffect="{fadeOut}"showEffect="{fadeIn}"/>
5)Flex特效之Glow發光效果
Glow是一種發光效果,該效果使用了flash.filters.GlowFilter濾鏡類。假設對某個組件應用了Glow效果,就不能對該組件應用GlowFilter濾鏡,也沒法再次應用Glow效果。如下的代碼經過Image對象的mouseDownEffect觸發器觸發Glow效果:
10. <mx:Glowidmx:Glowid="glowImage"duration="1000"alphaFrom="1.0"alphaTo="0.3"
11.
12. blurXFrom="0.0"blurXTo="50.0"blurYFrom="0.0"blurYTo="50.0"color="0x
13.
14. 00FF00"/>
15.
16. <mx:Imagesourcemx:Imagesource="assets/plane.png"mouseDownEffect="{glowImage}"/>
6)Flex特效之Iris虹效果
Iris效果經過擴展或收縮集中在目標上的矩形遮罩爲效果目標設置動畫。該效果可以從目標的中心放大遮罩來顯示目標,也可以向中心收縮遮罩來隱藏目標。如下的代碼使用一個CheckBox對象設置Image的visible屬性,經過hideEffect和showEffect觸發器分別觸發各自的Iris效果:
17. <mx:Irisidmx:Irisid="irisOut"duration="1000"showTarget="true"/>
18.
19. <mx:Irisidmx:Irisid="irisIn"duration="1000"showTarget="false"/>
20.
21. <mx:Imageidmx:Imageid="Flex"source="assets/plane.png"visible="{cbx.selected}"
22.
23. showEffect="{irisIn}"hideEffect="{irisOut}"/>
24.
25. <mx:CheckBoxidmx:CheckBoxid="cbx"label="visible"selected="true"/>
7)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
26. <?xmlversionxmlversion="1.0"?>
27.
28. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"paddingLeft=
29.
30. "0"
31.
32. layout="absolute"mouseDown="moveImage();">
33.
34. <mx:Script>
35.
36. <![CDATA[
37.
38. //當按下鼠標時調用該事件
39.
40. privatefunctionmoveImage():void{
41.
42. //中止播放Move效果
43.
44. moveEffect.end();
45.
46. //設置目標位置
47.
48. moveEffect.xTo=mouseX;
49.
50. moveEffect.yTo=mouseY;
51.
52. //播放Move效果
53.
54. moveEffect.play();
55.
56. }
57.
58. ]]>
59.
60. </mx:Script>
61.
62. <mx:Moveidmx:Moveid="moveEffect"target="{img}"/>
63.
64. <mx:Imageidmx:Imageid="img"source="assets/plane.png"/>
65.
66. </mx:Application>
67.
代碼中將Application的layout屬性設置爲absolute,當用戶在應用程序中不論什麼位置上單擊鼠標時,調用moveImage方法,該方法中首先中止Move效果,而後依據鼠標單擊的位置設置目標位置,最後播放效果。
一般Move效果應用於使用絕對定位的容器(如Canvas)或使用「layout=absolute」的容器(如Application或Panel)中。假設需要將其應用到本身主動佈局的容器(如VBox或Grid容器)中,儘管會移動目標對象,但下次容器更新其佈局時,會將目標對象移回其原始位置。在這樣的狀況下,可以將容器的autoLayout屬性設置爲false來禁止往回移動,但這會禁用容器中所有控件的佈局。
8)Flex特效之Pause暫停效果
Pause效果可以實現在指定時間段內不執行不論什麼操做的功能。假設將Pause效果加入爲Sequence效果的子項,可以建立2個其它效果之間的暫停。
9)Flex特效之Resize大小調整效果
Resize效果用來改變組件的大小。與Move效果相似,Resize效果可以指定初始大小(widthFrom、heightFrom)、目標大小(widthTo、heightTo)和變化量(widthBy、heightBy),其使用規則也與Move效果的初始位置、目標位置和移動量的使用規則相似。如下的代碼演示了Resize效果的用法:
1. <mx:Resizeidmx:Resizeid="expand"target="{img}"widthTo="100"heightTo="160"/>
2.
3. <mx:Resizeidmx:Resizeid="contract"target="{img}"widthTo="25"heightTo="40"/>
4.
5. <mx:ControlBar>
6.
7. <mx:Buttonlabelmx:Buttonlabel="Expand"click="expand.end();expand.play();"/>
8.
9. <mx:Buttonlabelmx:Buttonlabel="Contract"click="contract.end();contract.play();"/>
10.
11. </mx:ControlBar>
12.
13. <mx:Imageidmx:Imageid="img"width="25"height="40"source="assets/icon01.png"/>
14.
另外hideChildrenTargets屬性用來隱藏Panel容器的其它子項,當咱們對Panel容器中的子項應用Resize效果時,默認狀況下Panel會重複計算子項的大小和位置以調整佈局,假設將這個屬性設爲true,可以讓Panel容器在播放動畫時不作這樣的計算,直到播放完畢,這樣可以節約系統資源。
10)Flex特效之Rotate旋轉效果
Rotate是一種旋轉效果,使組件環繞指定的點旋轉。Rotate可以指定旋轉中心的座標(originX和originY屬性)及旋轉的起始角度(angleFrom屬性)和終於角度(angleTo屬性)。起始旋轉角度的有效值範圍是0~360,而終於角度則可以是正值也可以是負值,默認值爲360。假設angleTo的值比angleFrom的值小,則目標沿逆時針方向旋轉,不然以順時針方向旋轉。代碼例如如下:
15. <mx:Rotateidmx:Rotateid="rotate"angleFrom="-45"angleTo="0"target="{img}"
16.
17. duration="2000"/>
18.
19. <mx:Imageidmx:Imageid="img"source="assets/plane.png"addedEffect="rotate"/>
20.
另外有時需要設置hideFocusRing屬性,以肯定在開始播放效果時,效果是否應隱藏對焦環。該屬性默認值爲true。對於組件而言,對焦環已經被本身主動隱藏。假設Rotate效果應用於那些不是以UIComponent爲基類目標對象,就必須隱藏對焦環。
需要注意的是,hideFocusRing屬性在以Effect爲基類的效果類中,默認值爲false,而在以MaskEffect爲基類效果類中,默認值爲true。
11)Flex特效之SoundEffect聲音效果
SoundEffect效果用來播放MP3音頻文件。咱們可以經過source屬性指定要播放的MP3文件,可以直接設置該文件的URL,或是由Embedkeyword嵌入MP3文件的Class對象。
SoundEffect效果的屬性包含如下幾個。
lautoLoad屬性用來設置是否本身主動載入MP3文件,默認值爲true。
lbufferTime屬性用來設置聲音對象的緩衝時間。默認值爲1000,單位爲毫秒。
lisLoading假設已載入MP3,則該屬性爲true。
lloops屬性用來設置循環次數,默認值爲0。
lpanEasingFunction屬性用來設置聲音均衡效果的緩動函數。
lpanFrom屬性和panTo屬性用來設置聲音對象的起始和終於平移,取值範圍在-1.0~1.0之間,當中-1.0表示僅使用左聲道,1.0表示僅使用右聲道,而0.0表示在2個聲道間平均地均衡聲音。
lsound屬性表示已載入MP3文件的聲音對象。
lsource屬性表示要播放的MP3文件的URL或類。
lstartTime屬性用來設置開始播放時間(以毫秒爲單位),默認值爲0。
luseDuration屬性表示是否依據duration屬性指定的時間中止播放,假設爲false,則會在MP3完畢播放或循環後中止效果,默認值爲true。
lvolumeEasingFunction屬性用來設置音量效果的緩動函數。
lvolumeFrom屬性和volumeTo屬性用來設置聲音對象的初始和終於音量,取值範圍在0.0~1.0之間,默認值爲1。
在如下的代碼所看到的的樣例中,當應用程序建立完畢後開始播放聲音文件,聲音從左聲道過渡到右聲道。
代碼清單SoundSample.mxml
1. <?xmlversionxmlversion="1.0"?>
2.
3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"
4.
5. creationCompleteEffect="{mySound}">
6.
7. <mx:SoundEffectidmx:SoundEffectid="mySound"
8.
9. duration="10000"
10.
11. useDuration="false"
12.
13. panFrom="-1"panTo="1"
14.
15. source="@Embed(source='assets/bumperc.mp3')"/>
16.
17. </mx:Application>
12)Flex特效之WipeUp、WipeRight、WipeDown、WipeLeft擦除效果
這些類定義了4個方向的擦除效果,一般與showEffect和hideEffect觸發器配合使用,使用起來很簡便,如如下的樣例。
代碼清單WipeSample.mxml
1. <?xmlversionxmlversion="1.0"?>
2.
3. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">
4.
5. <!--定義擦除效果-->
6.
7. <mx:WipeUpidmx:WipeUpid="wipeUpOut"duration="1000"/>
8.
9. <mx:WipeUpidmx:WipeUpid="wipeUpIn"duration="1000"/>
10.
11. <mx:WipeLeftidmx:WipeLeftid="wipeLeftOut"duration="1000"/>
12.
13. <mx:WipeLeftidmx:WipeLeftid="wipeLeftIn"duration="1000"/>
14.
15. <mx:WipeDownidmx:WipeDownid="wipeDownOut"duration="1000"/>
16.
17. <mx:WipeDownidmx:WipeDownid="wipeDownIn"duration="1000"/>
18.
19. <mx:WipeRightidmx:WipeRightid="wipeRightOut"duration="1000"/>
20.
21. <mx:WipeRightidmx:WipeRightid="wipeRightIn"duration="1000"/>
22.
23. <mx:Paneltitlemx:Paneltitle="WipeEffects">
24.
25. <mx:HBoxwidthmx:HBoxwidth="100%">
26.
27. <!--向上擦除-->
28.
29. <mx:Imagesourcemx:Imagesource="@Embed(source='assets/icon1.png')"visible="{cbx.se
30.
31. lected}"
32.
33. hideEffect="{wipeUpOut}"showEffect="{wipeUpIn}"/>
34.
35. <!--向左擦除-->
36.
37. <mx:Imagesourcemx:Imagesource="@Embed(source='assets/icon2.png')"visible="{cbx.se
38.
39. lected}"
40.
41. hideEffect="{wipeLeftOut}"showEffect="{wipeLeftIn}"/>
42.
43. <!--向下擦除-->
44.
45. <mx:Imagesourcemx:Imagesource="@Embed(source='assets/icon3.png')"visible="{cbx.se
46.
47. lected}"
48.
49. hideEffect="{wipeDownOut}"showEffect="{wipeDownIn}"/>
50.
51. <!--向右擦除-->
52.
53. <mx:Imagesourcemx:Imagesource="@Embed(source='assets/icon4.png')"visible="{cbx.se
54.
55. lected}"
56.
57. hideEffect="{wipeRightOut}"showEffect="{wipeRightIn}"/>
58.
59. </mx:HBox>
60.
61. <mx:ControlBar>
62.
63. <mx:CheckBoxidmx:CheckBoxid="cbx"label="visible"selected="true"/>
64.
65. </mx:ControlBar>
66.
67. </mx:Panel>
68.
69. </mx:Application>
70.
執行該程序,效果如圖9-2所看到的。
圖9-2擦除效果
13)Flex特效之Zoom縮放效果
Zoom效果可以以指定點爲中心按比例縮放對象。與Resize效果不一樣的是,Resize改變目標對象的長寬屬性,而Zoom改變的目標對象的縮放比例。在如下的樣例中,當鼠標移動到圖片上時開始播放Zoom效果,鼠標移出時還原。
代碼清單ZoomSample.mxml
71. <?xmlversionxmlversion="1.0"encoding="utf-8"?>
72.
73. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">
74.
75. <mx:Script>
轉自:http://www.cnblogs.com/csharponworking/archive/2011/04/07/2008826.html
由於代碼的空格和換行都處理掉了,代碼還被隱藏了不少,湊合看吧。。
清楚的去原文地址看吧