日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Flex特效使用大全

本文和大家重點(diǎn)討論一下Flex特效,F(xiàn)lex的行為機(jī)制使得開發(fā)者可以很方便地為應(yīng)用程序添加動(dòng)畫效果,從而使用戶界面更加豐富多彩。本文將介紹如何在Flex應(yīng)用程序中創(chuàng)建行為及動(dòng)畫效果。

 Flex特效講解

Flex的行為機(jī)制使得開發(fā)者可以很方便地為應(yīng)用程序添加動(dòng)畫效果,從而使用戶界面更加豐富多彩。本章將介紹如何在Flex應(yīng)用程序中創(chuàng)建行為及動(dòng)畫效果。

1.什么是Flex行為

Flex中的行為(Behavior)是由觸發(fā)器(Trigger)和效果(Effect)組合而成。當(dāng)用戶在界面中進(jìn)行某項(xiàng)操作時(shí),如單擊某個(gè)按鈕,觸發(fā)器會(huì)被激活,從而使目標(biāo)組件發(fā)生某些視覺或聽覺上的變化,例如播放一段逐漸顯示的動(dòng)畫或發(fā)出聲響等。觸發(fā)器可以由用戶操作觸發(fā),也可以由程序觸發(fā),一個(gè)觸發(fā)器可以對(duì)應(yīng)多個(gè)效果。

1.1觸發(fā)器與效果

觸發(fā)器的使用非常簡(jiǎn)單,可以作為MXML標(biāo)記中的一個(gè)屬性,也可以在標(biāo)記中調(diào)用,或者在ActionScript中用setStyle()和getStyle()方法調(diào)用。觸發(fā)器的名稱為triggerEvent名稱+“Effect”后綴。按照這種名稱約定,mouseDown事件的觸發(fā)器名稱為mouseDownEffect。Flex中提供的觸發(fā)器名稱包括以下幾種。

laddedEffect:當(dāng)組件添加到容器中時(shí)觸發(fā)。

lcreationCompleteEffect:組件創(chuàng)建完畢時(shí)觸發(fā)。

lfocusInEffect:組件獲得焦點(diǎn)時(shí)觸發(fā)。

lfocusOutEffect:組件失去焦點(diǎn)時(shí)觸發(fā)。

lhideEffect:當(dāng)組件的visible屬性更改為false時(shí)觸發(fā)。

lmouseDownEffect:按下鼠標(biāo)時(shí)觸發(fā)。

lmouseUpEffect:釋放鼠標(biāo)時(shí)觸發(fā)。

lmoveEffect:組件移動(dòng)時(shí)觸發(fā)。

lremovedEffect:組件被移除時(shí)觸發(fā)。

lresizeEffect:組件改變大小時(shí)觸發(fā)。

lrollOutEffect:鼠標(biāo)從組件上移開時(shí)觸發(fā)。

lrollOverEffect:鼠標(biāo)移動(dòng)到組件上時(shí)觸發(fā)。

lshowEffect:組件的visible屬性更改為true時(shí)觸發(fā)。

Flex的動(dòng)畫效果由一個(gè)工廠類(Factory)和一個(gè)實(shí)例類(Instance)構(gòu)成。工廠類用來處理事件、控制動(dòng)畫,它的名稱就是效果的名稱,如Zoom。通常我們?cè)趹?yīng)用程序中創(chuàng)建一個(gè)工廠類的實(shí)例,設(shè)置必要的參數(shù),然后將該實(shí)例與觸發(fā)器關(guān)聯(lián)。實(shí)例類則用來實(shí)現(xiàn)動(dòng)畫效果,當(dāng)觸發(fā)器被觸發(fā)或調(diào)用play()方法時(shí),工廠類創(chuàng)建一個(gè)實(shí)例類的實(shí)例來播放所需效果,執(zhí)行結(jié)束后,該實(shí)例會(huì)被銷毀,如果一個(gè)效果對(duì)應(yīng)多個(gè)目標(biāo)對(duì)象,每一個(gè)目標(biāo)對(duì)象都會(huì)有一個(gè)自己的實(shí)例。實(shí)例類的命名規(guī)則為效果名+Instance。如之前定義的工廠類名為Zoom,那么實(shí)例類名就是ZoomInstance。Effect的這種機(jī)制,是設(shè)計(jì)模式中工廠模式的一種應(yīng)用,效果執(zhí)行的時(shí)候,運(yùn)行的不是Zoom,而是ZoomInstance。

下面的圖9-1分別表現(xiàn)了工廠類和實(shí)例類的層級(jí)關(guān)系。Effect類是一個(gè)抽象基類,是定義所有效果的基本工廠類。EffectInstance類是定義所有效果實(shí)例子類的基類。在應(yīng)用程序中不會(huì)創(chuàng)建Effect類本身的實(shí)例,而是創(chuàng)建一個(gè)子類的實(shí)例,如Mask或Tween。

圖9-1工廠類與實(shí)例類

#p#1.2簡(jiǎn)單效果組件

Flex中提供了豐富的效果組件。由于效果是一種根據(jù)時(shí)間漸變的過程,因此所有效果都具有duration屬性,用來設(shè)置播放時(shí)間(以毫秒為單位)。也可以通過設(shè)置repeatCount屬性和repeatDelay屬性,來分別控制效果播放的次數(shù)和重復(fù)播放效果的時(shí)間間隔(以毫秒為單位)。如果希望在觸發(fā)器被觸發(fā)后,延遲一段時(shí)間調(diào)用效果,可以使用startDelay屬性。

1)Flex特效之AnimateProperty動(dòng)畫效果

AnimateProperty是用來為組件的屬性或樣式設(shè)置動(dòng)畫的效果。我們可以通過其property屬性設(shè)定目標(biāo)對(duì)象上需要設(shè)置動(dòng)畫效果的屬性,然后設(shè)置fromValue屬性和toValue屬性,為效果提供屬性的起始值和結(jié)束值。例如下面的代碼使用mouseDownEffect觸發(fā)器,當(dāng)單擊圖片時(shí),觸發(fā)AnimateProperty效果,在1秒鐘內(nèi),Image對(duì)象的scaleX屬性由1變?yōu)?,被橫向拉伸。代碼如下:

 
 
 
 
  1. "toValue="2"
  2. duration="1000"/>

如果希望通過樣式設(shè)置效果,可以將isStyle屬性設(shè)置為ture,然后通過setStyle()方法設(shè)置目標(biāo)對(duì)象的樣式,從而達(dá)到設(shè)置效果的目的。

2)Flex特效之Blur模糊效果

Blur是一種模糊效果。該效果使用了flash.filters.BlurFilter濾鏡,如果對(duì)某個(gè)組件應(yīng)用了Blur效果,就不能再對(duì)該組件應(yīng)用BlurFilter濾鏡,也無法再次應(yīng)用Blur效果。下面的代碼通過Image對(duì)象的mouseDownEffect觸發(fā)器觸發(fā)Blur效果,在1秒鐘內(nèi),Image對(duì)象將逐漸變得模糊。代碼如下:

 
 
 
 
  1. blurYFrom="0.0"blurYTo="10.0"/>

3)Flex特效之Dissolve溶解效果

Dissolve是一種溶解效果。當(dāng)效果開始播放時(shí),將創(chuàng)建一個(gè)不透明的矩形,這個(gè)矩形懸浮在目標(biāo)組件的上方,它的顏色由Dissolve.color屬性設(shè)置,此時(shí)透明度為“1.0-Dissolve.alphaFrom”。隨著效果的播放,該矩形的alpha屬性將從(1.0-alphaFrom)逐漸變?yōu)椤?.0–alphaTo”,直到效果播放完成,矩形被銷毀。

如果目標(biāo)對(duì)象是一個(gè)容器,那么Dissolve效果將應(yīng)用于容器內(nèi)部的內(nèi)容區(qū)域。

下面的代碼使用一個(gè)CheckBox對(duì)象設(shè)置Image的visible屬性,通過hideEffect和showEffect觸發(fā)器分別觸發(fā)各自的Dissolve效果:

 
 
 
 
  1. .0"/>
  2. 0"/>
  3. hideEffect="{dissolveOut}"showEffect="{dissolveIn}"/>

#p#4)Flex特效之Fade淡入淡出效果

Fade是一種淡入淡出效果,它通過設(shè)置組件的alpha屬性來實(shí)現(xiàn)動(dòng)畫效果。當(dāng)使用showEffect或hideEffect觸發(fā)器設(shè)置Fade效果時(shí),如果省略了alphaFrom和alphaTo屬性的值,那么在showEffect觸發(fā)器上目標(biāo)對(duì)象的透明度將從0變化到目標(biāo)的當(dāng)前alpha值,而在hideEffect觸發(fā)器上則會(huì)從當(dāng)前的alpha值變化到0。如果要對(duì)字體使用Fade效果,必須使用嵌入字體。

下面的代碼使用一個(gè)CheckBox對(duì)象設(shè)置Image的visible屬性,通過hideEffect和showEffect觸發(fā)器分別觸發(fā)各自的Fade效果:

 
 
 
 
  1. hideEffect="{fadeOut}"showEffect="{fadeIn}"/>

5)Flex特效之Glow發(fā)光效果

Glow是一種發(fā)光效果,該效果使用了flash.filters.GlowFilter濾鏡類。如果對(duì)某個(gè)組件應(yīng)用了Glow效果,就不能對(duì)該組件應(yīng)用GlowFilter濾鏡,也無法再次應(yīng)用Glow效果。下面的代碼通過Image對(duì)象的mouseDownEffect觸發(fā)器觸發(fā)Glow效果:

 
 
 
 
  1. blurXFrom="0.0"blurXTo="50.0"blurYFrom="0.0"blurYTo="50.0"color="0x
  2. 00FF00"/>

6)Flex特效之Iris虹效果

Iris效果通過擴(kuò)展或收縮集中在目標(biāo)上的矩形遮罩為效果目標(biāo)設(shè)置動(dòng)畫。該效果可以從目標(biāo)的中心放大遮罩來顯示目標(biāo),也可以向中心收縮遮罩來隱藏目標(biāo)。下面的代碼使用一個(gè)CheckBox對(duì)象設(shè)置Image的visible屬性,通過hideEffect和showEffect觸發(fā)器分別觸發(fā)各自的Iris效果:

 
 
 
 
  1. showEffect="{irisIn}"hideEffect="{irisOut}"/>

7)Flex特效之Move移動(dòng)效果

Move效果用來實(shí)現(xiàn)移動(dòng)動(dòng)畫。在給定時(shí)間內(nèi),組件的位置會(huì)隨時(shí)間變化而變化。使用該效果通常需要用到以下幾個(gè)屬性。

lxFrom和yFrom屬性用來指定初始位置。

lxTo和yTo屬性用來指定目標(biāo)位置。

lxBy和yBy用來指定移動(dòng)量,即組件在x軸向和y軸向上的移動(dòng)速度。

通常只需要指定初始位置、目標(biāo)位置或移動(dòng)量這些值中的任意2個(gè),F(xiàn)lex就會(huì)計(jì)算第3個(gè)值。如果指定所有這3個(gè)值,F(xiàn)lex就會(huì)忽略xBy和yBy值。如果僅指定xTo和yTo值或xBy和yBy值,那么Flex會(huì)將xFrom和yFrom設(shè)置為對(duì)象的當(dāng)前位置。

下面的程序演示了如何使用Move效果。

代碼清單MoveSample.mxml

 
 
 
 
  1. "0"
  2. layout="absolute"mouseDown="moveImage();">
  3. //當(dāng)按下鼠標(biāo)時(shí)調(diào)用該事件
  4. privatefunctionmoveImage():void{
  5. //停止播放Move效果
  6. moveEffect.end();
  7. //設(shè)置目標(biāo)位置
  8. moveEffect.xTo=mouseX;
  9. moveEffect.yTo=mouseY;
  10. //播放Move效果
  11. moveEffect.play();
  12. }
  13. ]]>

代碼中將Application的layout屬性設(shè)置為absolute,當(dāng)用戶在應(yīng)用程序中任何位置上單擊鼠標(biāo)時(shí),調(diào)用moveImage方法,該方法中首先停止Move效果,然后根據(jù)鼠標(biāo)單擊的位置設(shè)置目標(biāo)位置,最后播放效果。

通常Move效果應(yīng)用于使用絕對(duì)定位的容器(如Canvas)或使用“l(fā)ayout=absolute”的容器(如Application或Panel)中。如果需要將其應(yīng)用到自動(dòng)布局的容器(如VBox或Grid容器)中,雖然會(huì)移動(dòng)目標(biāo)對(duì)象,但下次容器更新其布局時(shí),會(huì)將目標(biāo)對(duì)象移回其原始位置。在這種情況下,可以將容器的autoLayout屬性設(shè)置為false來禁止往回移動(dòng),但這會(huì)禁用容器中所有控件的布局。#p#

8)Flex特效之Pause暫停效果

Pause效果可以實(shí)現(xiàn)在指定時(shí)間段內(nèi)不執(zhí)行任何操作的功能。如果將Pause效果添加為Sequence效果的子項(xiàng),可以創(chuàng)建2個(gè)其他效果之間的暫停。

9)Flex特效之Resize大小調(diào)整效果

Resize效果用來改變組件的大小。與Move效果相似,Resize效果可以指定初始大?。╳idthFrom、heightFrom)、目標(biāo)大?。╳idthTo、heightTo)和變化量(widthBy、heightBy),其使用規(guī)則也與Move效果的初始位置、目標(biāo)位置和移動(dòng)量的使用規(guī)則相似。下面的代碼演示了Resize效果的使用方法:

 
 
 
 

另外hideChildrenTargets屬性用來隱藏Panel容器的其他子項(xiàng),當(dāng)我們對(duì)Panel容器中的子項(xiàng)應(yīng)用Resize效果時(shí),默認(rèn)情況下Panel會(huì)反復(fù)計(jì)算子項(xiàng)的大小和位置以調(diào)整布局,如果將這個(gè)屬性設(shè)為true,可以讓Panel容器在播放動(dòng)畫時(shí)不做這種計(jì)算,直到播放完成,這樣可以節(jié)約系統(tǒng)資源。

10)Flex特效之Rotate旋轉(zhuǎn)效果

Rotate是一種旋轉(zhuǎn)效果,使組件圍繞指定的點(diǎn)旋轉(zhuǎn)。Rotate可以指定旋轉(zhuǎn)中心的坐標(biāo)(originX和originY屬性)及旋轉(zhuǎn)的起始角度(angleFrom屬性)和最終角度(angleTo屬性)。起始旋轉(zhuǎn)角度的有效值范圍是0~360,而最終角度則可以是正值也可以是負(fù)值,默認(rèn)值為360。如果angleTo的值比angleFrom的值小,則目標(biāo)沿逆時(shí)針方向旋轉(zhuǎn),否則以順時(shí)針方向旋轉(zhuǎn)。代碼如下:

 
 
 
 
  1. duration="2000"/>

另外有時(shí)需要設(shè)置hideFocusRing屬性,以確定在開始播放效果時(shí),效果是否應(yīng)隱藏對(duì)焦環(huán)。該屬性默認(rèn)值為true。對(duì)于組件而言,對(duì)焦環(huán)已經(jīng)被自動(dòng)隱藏。如果Rotate效果應(yīng)用于那些不是以UIComponent為基類目標(biāo)對(duì)象,就必須隱藏對(duì)焦環(huán)。

需要注意的是,hideFocusRing屬性在以Effect為基類的效果類中,默認(rèn)值為false,而在以MaskEffect為基類效果類中,默認(rèn)值為true。#p#

11)Flex特效之SoundEffect聲音效果

SoundEffect效果用來播放MP3音頻文件。我們可以通過source屬性指定要播放的MP3文件,可以直接設(shè)置該文件的URL,或是由Embed關(guān)鍵字嵌入MP3文件的Class對(duì)象。

SoundEffect效果的屬性包括以下幾個(gè)。

lautoLoad屬性用來設(shè)置是否自動(dòng)加載MP3文件,默認(rèn)值為true。

lbufferTime屬性用來設(shè)置聲音對(duì)象的緩沖時(shí)間。默認(rèn)值為1000,單位為毫秒。

lisLoading如果已加載MP3,則該屬性為true。

lloops屬性用來設(shè)置循環(huán)次數(shù),默認(rèn)值為0。

lpanEasingFunction屬性用來設(shè)置聲音均衡效果的緩動(dòng)函數(shù)。

lpanFrom屬性和panTo屬性用來設(shè)置聲音對(duì)象的起始和最終平移,取值范圍在-1.0~1.0之間,其中-1.0表示僅使用左聲道,1.0表示僅使用右聲道,而0.0表示在2個(gè)聲道間平均地均衡聲音。

lsound屬性表示已加載MP3文件的聲音對(duì)象。

lsource屬性表示要播放的MP3文件的URL或類。

lstartTime屬性用來設(shè)置開始播放時(shí)間(以毫秒為單位),默認(rèn)值為0。

luseDuration屬性表示是否根據(jù)duration屬性指定的時(shí)間停止播放,如果為false,則會(huì)在MP3完成播放或循環(huán)后停止效果,默認(rèn)值為true。

lvolumeEasingFunction屬性用來設(shè)置音量效果的緩動(dòng)函數(shù)。

lvolumeFrom屬性和volumeTo屬性用來設(shè)置聲音對(duì)象的初始和最終音量,取值范圍在0.0~1.0之間,默認(rèn)值為1。

在下面的代碼所示的例子中,當(dāng)應(yīng)用程序創(chuàng)建完成后開始播放聲音文件,聲音從左聲道過渡到右聲道。

代碼清單SoundSample.mxml

 
 
 
 
  1. creationCompleteEffect="{mySound}">
  2. duration="10000"
  3. useDuration="false"
  4. panFrom="-1"panTo="1"
  5. source="@Embed(source='assets/bumperc.mp3')"/>

#p#12)Flex特效之WipeUp、WipeRight、WipeDown、WipeLeft擦除效果

這些類定義了4個(gè)方向的擦除效果,通常與showEffect和hideEffect觸發(fā)器配合使用,使用起來非常簡(jiǎn)便,如下面的例子。

代碼清單WipeSample.mxml

 
 
 
 
  1.  
  2. hideEffect="{wipeUpOut}"showEffect="{wipeUpIn}"/>
  3. hideEffect="{wipeLeftOut}"showEffect="{wipeLeftIn}"/>
  4. hideEffect="{wipeDownOut}"showEffect="{wipeDownIn}"/>
  5. hideEffect="{wipeRightOut}"showEffect="{wipeRightIn}"/>

運(yùn)行該程序,效果如圖9-2所示。

 圖9-2擦除效果

13)Flex特效之Zoom縮放效果

Zoom效果可以以指定點(diǎn)為中心按比例縮放對(duì)象。與Resize效果不同的是,Resize改變目標(biāo)對(duì)象的長(zhǎng)寬屬性,而Zoom改變的目標(biāo)對(duì)象的縮放比例。在下面的例子中,當(dāng)鼠標(biāo)移動(dòng)到圖片上時(shí)開始播放Zoom效果,鼠標(biāo)移出時(shí)還原。

代碼清單ZoomSample.mxml

 
 
 
 

網(wǎng)站名稱:Flex特效使用大全
標(biāo)題來源:http://www.5511xx.com/article/ccdiesj.html