第六章,實(shí)現(xiàn)對影片的控制
影片的播放是有一定的順序的,當(dāng)然這樣的順序并不是不以改變的,在Action指令中的中有很多的指令是控制和獲取幀的,在Frame幀面板上,還可以為幀加上標(biāo)簽,哪么,在今后控制幀播放順序的時候也會很方便。在Flash動畫制作方面,通過幀控制來實(shí)現(xiàn)交互也是一種常見的方法。當(dāng)然幀控制的方法有很多種,一個章節(jié)不可以全部介紹。所以用一種比較通用的辦法來了解幀控制行為是很有必要的。請看圖6-1,在這個圖的下邊有一排按鈕,這些按鈕實(shí)現(xiàn)的功能想必一目了然了吧。哪么,就跟我一起開始下面的實(shí)例。(此例源程序光盤范例\ch6\6-1.fla)
圖6-1 影片控制按鈕的界面
6.1 播放和停止鍵
在開始制作控制鍵之前,有必要對將要涉及的指令做一個全面的了解。打開Flash5的Action面板。在Basic Actions指令集中你可以觀察到有幾個關(guān)于幀控制方面的指令。
圖6-2 Action中的幀控制指令
◆ Gotoandplay在所有指令中被安排在第一位。也就是Action面板中Basic Actions中的第一個指令,可見它的重要性了。在goto指令上雙擊后,在程序編輯區(qū),你會出現(xiàn)gotoandplay(1)命令行了。當(dāng)此命令出現(xiàn)時參數(shù)輸入?yún)^(qū),共有兩個下拉框,和個輸入框,和一個單選框。 ● Scene下拉框表示選擇場景,在其中會用所有的場景列表。 ● Type下拉框中共有幾個選項(xiàng)。Frame Number表示使用幀序列號表達(dá)所要跳轉(zhuǎn)的幀。Frame Label表示用幀標(biāo)簽來表達(dá)所要跳轉(zhuǎn)的幀,當(dāng)然你必須在Frame幀面板中為幀加上標(biāo)簽。Expression表示用表達(dá)式來表達(dá)所要跳轉(zhuǎn)的幀。Next Frame表示跳轉(zhuǎn)到下一幀。Previous Frame表示跳轉(zhuǎn)到上一幀。
圖6-3 goto指令的Type下拉框
● Frame輸入框中可以根據(jù)Type下拉框的選擇輸入所要跳轉(zhuǎn)的幀。 ● 單選框gotoandplay選取時會以gotoandplay跳轉(zhuǎn)并播放來加入代碼,取消選取狀態(tài)程序會變?yōu)間otoandstop。 ◆ gotoandstop的意思很簡單,跳轉(zhuǎn)到指定幀并且停止播放。 ◆ play的意思是開始播放。 ◆ stop的意思是在當(dāng)前位置停止播放。 ◆ nextframe的意思是跳轉(zhuǎn)到下一幀。 ◆ prevframe的意思是跳轉(zhuǎn)到上一幀。 所有這些指令構(gòu)成了幀跳轉(zhuǎn)的基本使用方法。每一個指令都不復(fù)雜。但是合理的應(yīng)用才是關(guān)鍵。有時候我們驚嘆于國外網(wǎng)站眩目的動畫效果,但他們基本上并不使用多么復(fù)雜的編程,只是使用幀跳轉(zhuǎn)和按鈕就作到了很多的事情。所以學(xué)習(xí)Action腳本編程是為我們的動畫效果服務(wù)的,而編程本身并不是目的。 開始制作播放按鈕和停止按鈕。如圖6-4所示。
圖6-4 播放、暫停和停止鍵
步驟一、選擇Window|Common Library|Bottons命令,打開Flash的共享庫面板,你可以看到很多的按鈕樣式,其中大部份都是播放控制鍵,可見Macromedia公司對播放鍵的重視程度,你可以選擇任何一款按鈕,倒了不必與筆者相同。
圖6-5 Common Library共享庫面板
步驟二、在你制作好的動畫源程序上新建一個圖層,你會看到系統(tǒng)會把幀自動加入到你的動畫的總長度。在第一幀位置上,將這三個按鈕拖入。用Align對齊面板調(diào)整好它們的位置。
圖6-6 系統(tǒng)默認(rèn)插入幀會自動加入動畫的總長度
步驟三、你可以觀察到系統(tǒng)會把按鈕的位置貫穿于動畫的始末。如圖6-7。
圖6-7 貫穿始末的幀
步驟四、當(dāng)然如果你不喜歡這樣的方式,你可以在時間軸上再進(jìn)行操作,但是現(xiàn)在,我們希望這個按鈕會在動畫的整個過程中都體現(xiàn),所以就使用系統(tǒng)的默認(rèn)設(shè)置。 步驟五、在代表播放的按鍵上點(diǎn)擊鼠標(biāo)右鍵,選擇Action,打開按鈕的Action行為面板。 步驟六、點(diǎn)擊Basic Actions指令集中的play指令,可以看出在程序的編輯區(qū)擁有了一兩行指令 On(release){ play() ) 播放按鈕制作完成。
圖6-8 播放按鈕的代碼
步驟七、現(xiàn)在再來制作暫停按鈕。在按鈕上點(diǎn)擊鼠標(biāo)右鍵選擇Action,在打開的Action面板中選擇stop(),暫停按鈕制作完成。
圖6-9 暫停按鈕的代碼
步驟八、再來制作停止按鈕的代碼行。停止按鈕其實(shí)是停止在片首的按鈕。哪么在停止按鈕上擊鼠標(biāo)右鍵選擇Action,打開Action面板后選擇goto指令,然后取消gotoandplay單選框的選取狀態(tài)。代碼如圖6-10所示。
圖6-10 停止按鈕的代碼
步驟九、整個按鈕的代碼并不復(fù)雜,操作也很簡單,然后按Ctrl+Enter鍵測試。 知識要點(diǎn): 在這三個按鈕的制作過程中,可能會以為這樣的控制制作起來很簡單。但其實(shí)大型網(wǎng)站的建設(shè)離不開這三段代碼行。很多的效果都是很簡單,就像動畫本身一樣,單一的效果不管有多眩總是不如組合的效果,一個大型網(wǎng)站的建設(shè)像這樣的代碼行少則十幾段多則上百段。雖然都很簡單,但是整體效果一出來還是會讓人瞪目結(jié)舌的。
6.2 步進(jìn)與步退
在步進(jìn)和步退按鈕指令中,你還可以接觸到一個屬性_currentframe。這是用來返回當(dāng)前幀的屬性。還有一個_totalframes是用來返回動畫的總長度的屬性,用這兩個屬性來達(dá)到步進(jìn)和步退按鈕的效果,因?yàn)橛盟梢詸z測到場景或是電影剪輯的當(dāng)前播放幀。還有總長度,這就足夠了。 步驟一、在Window|Common Library|Buttons中選擇一個代表步進(jìn)和步退的按鈕。將它們拖入到場景的第一幀,并且用Align對齊面板調(diào)整與前三個按鈕的位置。 步驟二、在代表步進(jìn)的按鈕上點(diǎn)擊鼠標(biāo)右鍵,選擇Action,打開步進(jìn)按鈕的Action面板。 步驟三、雙擊Basic Actions指令集中的goto指令。使之出現(xiàn)在程序編輯區(qū)。 步驟四、點(diǎn)擊Type下拉框,選擇Expression表達(dá)式選項(xiàng)。這表示我們在Frame框中將要輸入的是一個表達(dá)式。 步驟五、在Frame框中輸入代碼_currentframe+1,同時取消對gotoandplay單選框的選取。如圖6-11所示。
圖6-11 步進(jìn)按鈕的代碼
步驟六、在場景的第一幀雙擊,打開第一幀的Action面板,選擇Basic Astions指令集中的stop指令,使動畫在加載時停止播放。 步驟七、按Ctrl+Enter鍵測試。你可以發(fā)現(xiàn),每按一下按鈕影片就會前進(jìn)一幀。 步驟八、然后制作步退按鈕的指令,在步退按鈕上點(diǎn)鼠標(biāo)右鍵,選擇Action,打開步退按鈕的Action面板。 步驟九、雙擊Basic Actions指令集的goto指令。選擇Type下拉框中的Expression項(xiàng),然后在Frame欄中輸入代碼_currentframe-1。 步驟十、取消對Go to and play單選框的選取,使之成為gotoandstop()。然后按Ctrl+Enter鍵測試。
圖6-12 步退按鈕的代碼
步驟十一、當(dāng)使用步進(jìn)按鈕后使用步退按鈕正好使得動畫一幀一幀的后退。當(dāng)動畫回到起始位置后,按鈕就失效了。如果我們想讓動畫可以循環(huán)的播放。就好像當(dāng)動畫在第一幀的時候按步退按鈕,還可以讓動畫回到結(jié)束位置,執(zhí)行循環(huán)的步退呢?還有步進(jìn)按鈕也是一樣,跟我繼續(xù)制作吧。 步驟十二、鼠標(biāo)右鍵點(diǎn)擊步退按鈕,選擇Action重新回到步退按鈕的Action面板,選取第一行。 步驟十三、然后雙擊Actions指令集中的if指令,在Condition中輸入代碼_currentframe<=1,如圖6-13所示。
圖6-13 if指令輸入框
步驟十四、然后雙擊Basic Actions指令集中的Goto行,取消Go to and play單選框的選取狀態(tài),在Type下拉框中選擇Expression項(xiàng)。表示輸入一個表達(dá)式。 步驟十五、在Frame框內(nèi)輸入表達(dá)式_totalframes完成如圖6-14所示。
圖6-14 步退按鈕的完整代碼
步驟十六、回到編輯區(qū),鼠標(biāo)右鍵點(diǎn)擊步進(jìn)按鈕的Action選項(xiàng),進(jìn)入步進(jìn)按鈕的Action面板,依然是在第一行上選取,然后在Actions指令集中雙擊if指令,在參數(shù)輸入框內(nèi)輸入條件參數(shù)為_currentframe>=_totalframes。 步驟十七、然后雙擊Basic Actions指令集中的Goto指令,取消對Go to and Play單選框的選取,使代碼內(nèi)容成為gotoandstop(1)。 步驟十八、這樣做的用意是讓程序回到第一幀。整個代碼完成如圖6-15所示。
圖6-15 步進(jìn)按鈕的完整代碼
步驟十九、按Ctrl+Enter鍵測試。 程序解讀: 以步進(jìn)按鈕為例第一行:當(dāng)按鈕單擊并且松開時發(fā)生{}括號內(nèi)的代碼段內(nèi)容。 第二行:當(dāng)()括號內(nèi)的_currentframe>=_totalframes條件發(fā)生時,這是一個什么事件呢,當(dāng)前幀大于等于總幀數(shù)的時候,發(fā)生if后面{}括號內(nèi)的內(nèi)容。我們在點(diǎn)擊按鈕時,會因?yàn)楫?dāng)前幀已經(jīng)是最后一幀,使得播放當(dāng)前幀加一的情況發(fā)生轉(zhuǎn)變。動畫無法再繼續(xù)播放,所以出現(xiàn)了第三行的內(nèi)容,告訴動畫遇到這種情況的話執(zhí)行{}括號內(nèi)的內(nèi)容。 第三行:跳轉(zhuǎn)到第一幀。第一次點(diǎn)擊按鈕時,程序都會進(jìn)行一次判斷,判斷當(dāng)前播放的幀是否已經(jīng)超過了總幀數(shù)。如果已經(jīng)超過,哪么會讓時間軸指針回到動畫的起始位置。這也就是這個步進(jìn)按鈕的核心內(nèi)容。 第五行:播放并且停止到當(dāng)前幀加一的位置。 再來看看步退按鈕的代碼段內(nèi)容。 第一行與步進(jìn)按鈕的相同。 第二行當(dāng)動畫的當(dāng)前幀小于等于1的時候,也就是說當(dāng)動畫回到起始位置的時候,開始第三行內(nèi)容。 第三行,播放并且停止到動畫的最后一幀。 第五行:播放當(dāng)前幀減一的位置。 知識要點(diǎn): 整個程序使用了當(dāng)前幀加一的技術(shù),讓goto語句實(shí)現(xiàn)對表達(dá)式的結(jié)果進(jìn)行播放。在代碼當(dāng)中,可以把+currentframe看做是一個變量,是一個數(shù)字,這個數(shù)字會返回動畫播放的指針,這在大型控制類程序中相當(dāng)多見,在我們觀看動畫時,其實(shí)只能是去感覺而不是知道動畫的實(shí)際指針在什么地方。哪么通過_currentframe就可以知道播放指針在具體的什么位置。但_currentframe也有容易出錯的地方,比方說,它并不止是提供當(dāng)前動畫的播放指針。而且還可以是電影剪輯的播放指針,所以在使用這項(xiàng)技術(shù)的時候請一定注意路徑的使用,因?yàn)檫@們制作的這個動畫中的按鈕是在場景中,所以,_currentframe會返回當(dāng)前場景的播放指針,但如果是在電影剪輯當(dāng)中的話,這個程序就會返回電影剪輯的播放指針在什么位置。還有_totalframes總幀數(shù)屬性,它也是可以返回電影剪輯的總長度,并不只是像上例一樣是返回場景的指針。在接下來的例子當(dāng)中你會了解到關(guān)于電影剪輯和場景中跳徑使用的區(qū)別。
出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色
上一頁 下一頁 FLASH 5 教程 — Flash 影片控制 下
◎進(jìn)入論壇Flash專欄版塊參加討論
|