本例實(shí)現(xiàn)的效果是大小不斷變化的文字和泡泡。因?yàn)樯婕暗搅舜笮∩系淖兓?,所以在制作過(guò)程中,要涉及到影片剪輯的高寬(_x,_y)或縮放比例(_xscale,_yscale)等屬性。舞臺(tái)上將要出現(xiàn)的元件只有文字元件和泡泡元件兩大類,因此只需制作兩個(gè)元件即可。然后,使用動(dòng)態(tài)文本,讓一樣的文字元件顯示不一樣的文字。并讓各個(gè)文字和泡泡以不同的速率自動(dòng)變化大小。因?yàn)槊總€(gè)文字或泡泡的縮放過(guò)程除了最終的程度不同和縮放的速率不同,其他的步驟都是一樣的,在制作過(guò)程中主要使用自定義函數(shù)來(lái)簡(jiǎn)化程序代碼。最后,在舞臺(tái)上的每個(gè)文字和泡泡的onClipEvent事件中寫上相應(yīng)的程序代碼,就完成了所有的制作。發(fā)泡文字的最終播放效果如圖1所示,要實(shí)現(xiàn)這一效果,其操作步驟如下:
圖1 最終效果
一.制作泡泡元件
1.新建一個(gè)電影,在屬性面板中設(shè)置其尺寸為550pxX400px,選擇一種顏色(本例為#336699)作為背景色。
2.選擇“插入/新建元件”菜單命令或直接按Ctrl+F8,打開(kāi)“創(chuàng)建新元件”對(duì)話框。創(chuàng)建一電影剪輯,并為其命名為 “mBuble”。 按Shift+F9打開(kāi)“混色器”面板,將填充方式改為“放射漸變”并在下面的漸變色條上加上3個(gè)白色的漸變指針。把位于兩頭的2個(gè)漸變指針的Alpha值設(shè)為0,混色器面板如圖1所示。
圖2 設(shè)定泡泡的填充色
3.從工具箱中選取“橢圓”工具。將邊框色設(shè)定為無(wú),填充色定為上一步設(shè)好的圓形放射漸變后,按著Shift鍵,在舞臺(tái)中央畫一個(gè)正圓,如圖3所示。
圖3 泡泡
4.返回到主場(chǎng)景,按F11打開(kāi)“庫(kù)”面板。然后,從中拖幾個(gè)mBuble到舞臺(tái)上創(chuàng)建“泡泡”的多個(gè)實(shí)例。從工具箱中選取“自由變形”工具。使用這個(gè)工具調(diào)整舞臺(tái)上的泡泡大小。然后,再將泡泡們擺擺好,圖4所示:
圖4 擺好的泡泡
二.制作文字元件
1.選擇“插入/新建元件”菜單命令,打開(kāi)“創(chuàng)建新元件”對(duì)話框。創(chuàng)建一“電影剪輯”并為其命名為“mText”,從工具箱中選取文本工具,在舞臺(tái)上拉出一個(gè)長(zhǎng)條形文本框,并在里面寫上“X”, 圖5所示。
圖5 文本框
2.按Ctrl+F3打開(kāi)屬性面板,將文本類型改為“動(dòng)態(tài)文本”,字體設(shè)為“Times New Roman”,字體大小18,變量名也就是這個(gè)動(dòng)態(tài)文本框的名字設(shè)為txt,屬性面板如圖圖6所示:
圖6 設(shè)定動(dòng)態(tài)文本
3.回到主場(chǎng)景,打開(kāi)Library(庫(kù))面板,然后,需要寫幾個(gè)字,就從“庫(kù)”中拖幾個(gè)影片剪輯“mText”到舞臺(tái)上。比如,我們要在舞臺(tái)上顯示“Buble”,那么就要拖5個(gè)mText到舞臺(tái)上,以分別對(duì)應(yīng)Buble中的5個(gè)字母,可以根據(jù)需要自由設(shè)置。從工具箱中選擇“任意變形”工具。使用這個(gè)工具調(diào)整舞臺(tái)上的文字大小。然后,再將文字們擺擺好,效果如圖7所示。
圖7 擺放文字
4.下面開(kāi)始設(shè)置具體文字。選中最左邊的X,然后選擇“窗口/動(dòng)作”或直接按F9,打開(kāi)“動(dòng)作”面板。在面板中輸入以下ActionScript腳本:
onClipEvent (load){
this.txt = "B";
//設(shè)置要顯示的文字
}
onClipEvent (enterFrame) {
_root.Resizing(this, 3);
//調(diào)用自定義函數(shù)
}
onClipEvent (load) {
this.iDirection = 1;
//初始化iDirection的值
}
程序詳解:
第1行指明了下面花括號(hào)中的代碼要在影片剪輯的load事件發(fā)生時(shí)才執(zhí)行。那么,load事件在什么時(shí)候發(fā)生呢?回答是當(dāng)影片剪輯被讀入內(nèi)存,但是還沒(méi)顯示出來(lái)之前。第2行代碼表示將當(dāng)前影片剪輯中的txt變量的值設(shè)為等號(hào)右邊的字符(串)。this對(duì)象指代的就是當(dāng)前的影片剪輯,而txt就是我們?cè)谇皫撞恐性O(shè)定的那個(gè)動(dòng)態(tài)文本框的名字。所以這第2行的意義對(duì)于目前這個(gè)影片剪輯來(lái)說(shuō)就是,將當(dāng)前影片剪輯中的動(dòng)態(tài)文本框txt的值設(shè)為字符“B”。
5.參照以上步驟,給另外幾個(gè)mText元件的實(shí)例也添加上面的那段代碼。不過(guò),要記得把第2行等號(hào)右邊的東西改成相應(yīng)的字符,分另為u、b、l和e?,F(xiàn)在可以按Ctrl+Enter,預(yù)覽一下沒(méi)有動(dòng)畫時(shí)的樣子即可看見(jiàn)相應(yīng)的字母出現(xiàn)。如圖8所示:
圖8 預(yù)覽動(dòng)畫
三.添加程序代碼
1.將層“圖層1“的名字改為main,并插入一新圖層,為其改名為“action”,如圖9所示。選中層“action”的第1幀,然后按F9打開(kāi)Action面板,并在面板中輸入以下代碼。
function Resizing(obj, iStep) {
obj._xscale += iStep*obj.iDirection;
//設(shè)定對(duì)象obj在x軸上的縮放比例
obj._yscale = obj._xscale;
//設(shè)定對(duì)象obj在y軸上的縮放比例
obj.iDirection = (obj._xscale>iStep*85 || obj._xscale<45) ? (obj.iDirection*-1) : obj.iDirection;
//設(shè)定用來(lái)確定縮放狀態(tài)的變量obj.iDirection
}
程序詳解:
第1行使用function關(guān)鍵字,聲明了一個(gè)名為Resizing的自定義函數(shù)。而這個(gè)函數(shù)就是用以改變文字或泡泡大小的。我們看到,函數(shù)名后面跟有兩個(gè)參數(shù),一個(gè)是用來(lái)傳遞目前要進(jìn)行縮放操作的對(duì)象的obj參數(shù),另一個(gè)就是用來(lái)控制縮放速率的數(shù)值形參數(shù)iStep。第2行其實(shí)就等于obj._xscale = obj._xscale + iStep * obj.iDirection;其意思是,將obj對(duì)象_xscale屬性的值加上縮放速率iStep和縮放狀態(tài)obj.iDirection的乘積后,再重新賦值給這個(gè)obj對(duì)象的_xscale屬性。這obj.iDirection的值只有兩種,一個(gè)是1,另一個(gè)是-1,分別表示放大和縮小兩種狀態(tài)(當(dāng)?shù)扔?時(shí),加號(hào)后面的值為正,對(duì)象開(kāi)始變大;而當(dāng)?shù)扔?1時(shí),情況剛好相反)。因?yàn)槲覀兿胱屇硞€(gè)文字或泡泡變大到一定程度時(shí),開(kāi)始變小,而當(dāng)其小到一定程度時(shí)又重新變大。所以,這里才會(huì)想到給每個(gè)對(duì)象obj設(shè)置這么一個(gè)變量Direction,來(lái)確定是否到了該重新變大或變小的時(shí)候。第4行就是使obj對(duì)象在y軸上的縮放比例設(shè)為與x軸上的縮放比例相同(通過(guò)把obj對(duì)象的_xscale賦值給_yscale屬性)。最后來(lái)看看第6行,這一行看起來(lái)似乎很復(fù)雜,其實(shí)不然。等號(hào)右邊用“?:”操作符書寫的代碼,事實(shí)上是一個(gè)簡(jiǎn)化了的if判斷語(yǔ)句。問(wèn)號(hào)前面的內(nèi)容是判斷的條件,中間部分是當(dāng)判斷條件為真時(shí)將要返回的值,最后的部分則是當(dāng)判斷條件不成立時(shí)將要返回的值。這第6行所實(shí)現(xiàn)的功能,說(shuō)實(shí)際并簡(jiǎn)單點(diǎn)兒,就是根據(jù)條件切換對(duì)象開(kāi)始變大還是變小的狀態(tài)。說(shuō)得再具體點(diǎn),就是當(dāng)obj對(duì)象的_xscale屬性(也就是x軸上的縮放比例)大于縮放速率iStep的85倍、或小于45的時(shí)候,通過(guò)給obj.iDirection變量乘上個(gè)-1來(lái)達(dá)到改變iDirection值符號(hào)的作用。
2.寫完了自定義函數(shù),下面該給舞臺(tái)上的每個(gè)文字和泡泡對(duì)象添加程序代碼了。選中一個(gè)文字或泡泡對(duì)象,然后在打開(kāi)的Action面板中輸入以下程序代碼:
onClipEvent (enterFrame) {
_root.Resizing(this, 2);
//調(diào)用自定義函數(shù)
}
onClipEvent (load) {
this.iDirection = 1;
//初始化iDirection的值
}
程序詳解:
第1行表明了下面花括號(hào)中的代碼要在影片剪輯的enterFrame事件發(fā)生時(shí)才執(zhí)行。前面我們已經(jīng)看過(guò)一個(gè)load事件,那現(xiàn)在的這個(gè)enterFrame事件又作何解呢?我們知道,F(xiàn)lash影片的放映其實(shí)就是一格接一格地播放時(shí)間線上的幀,而這個(gè)enterFrame事件就發(fā)生在某個(gè)對(duì)象進(jìn)入某個(gè)幀的時(shí)候。所以,放在這個(gè)enterFrame事件中的程序代碼,將會(huì)在這一幀的任何其他程序代碼之前被執(zhí)行。這個(gè)事件的觸發(fā)頻率與當(dāng)前影片的播放速率相當(dāng)。也就是說(shuō),如果當(dāng)前影片的播放速率是每秒12幀,那么在1秒鐘之內(nèi)將發(fā)生12次enterFrame事件。接下來(lái)看第2行,這一行就是調(diào)用上面寫的用來(lái)對(duì)某個(gè)對(duì)象進(jìn)行縮放操作的自定義函數(shù)。因?yàn)?,我們把函?shù)Resizing寫在了主場(chǎng)景的時(shí)間線上,所以這里在函數(shù)名前面加了個(gè)_root,表示函數(shù)是屬于主場(chǎng)景里的。函數(shù)的兩個(gè)參數(shù),this和4分別表示要進(jìn)行縮放的對(duì)象和縮放的速率。this指代當(dāng)前這段代碼所在的對(duì)象。例如,你選擇了最左邊的泡泡,那么這里的this就代表這個(gè)泡泡對(duì)象。
3.重復(fù)以上步驟,將上面這段代碼附加給舞臺(tái)上的每一個(gè)對(duì)象。修改enterFrame事件中Resizing函數(shù)的第2個(gè)用來(lái)表示縮放速率的參數(shù),這樣才能讓每個(gè)對(duì)象以不同的速度變化大小。例如,我們給一個(gè)對(duì)象設(shè)定代碼_root.Resizing(this, 4); ,其速率為4;而給另一個(gè)對(duì)象設(shè)定代碼為_(kāi)root.Resizing(this, 2); 其速率為2。
4. 整個(gè)效果到此全部完成,保存作品,按“Ctrl+Enter”預(yù)覽最終效果,就可以看見(jiàn)漂亮的泡泡文字效果。
------------------------------- · 相關(guān)文檔瀏覽 · --------------------------------------------------------------------- · 熱門文檔瀏覽 · -------------------------------------