本例將要實(shí)現(xiàn)的是星球大戰(zhàn)開(kāi)場(chǎng)時(shí)的那種字幕顯示效果。而實(shí)時(shí)創(chuàng)建影片剪輯,并使用隨機(jī)函數(shù)和影片剪輯的Drawing Method(繪畫方法)繪制星空背景則是本節(jié)的重點(diǎn)。主要的影片結(jié)構(gòu)如下圖所示。
圖1 影片結(jié)構(gòu)
從上面這個(gè)圖片中可以看到,這個(gè)例子的結(jié)構(gòu)還是比較簡(jiǎn)單的。整個(gè)影片除去一個(gè)黑色背景之外只需要兩個(gè)圖層——用來(lái)放置要顯示的字幕的第1層和用來(lái)“鋪星星”作背景的第2層。因此,整個(gè)制作過(guò)程可以大致劃分為字幕的制作與背景的制作兩大部分。
字幕的制作相對(duì)比較簡(jiǎn)單,所以就不多說(shuō)了,這里簡(jiǎn)要提一下“星空”背景的制作原理。在這個(gè)例子中,用到的星空背景將不是用繪圖工具一點(diǎn)點(diǎn)畫出來(lái)的靜態(tài)背景,而是使用ActionScript動(dòng)態(tài)生成的動(dòng)態(tài)背景。因?yàn)槊看芜\(yùn)行時(shí),對(duì)應(yīng) N顆星星,程序會(huì)隨機(jī)產(chǎn)生N組橫坐標(biāo)、縱坐標(biāo)值。再加上每顆星星的大小,亮度也是隨機(jī)的,所以每次鋪出來(lái)的背景絕對(duì)是不一樣的。
在制作過(guò)程中主要使用了Free Transform工具的部分功能。并利用Math.random()函數(shù)生指定范圍內(nèi)的隨機(jī)數(shù)字的公式,實(shí)時(shí)創(chuàng)建影片剪輯以及部分繪畫方法的使用。最終播放效果如圖2所示,要實(shí)現(xiàn)這一效果,具體制作過(guò)程如下
圖2 星球大戰(zhàn)開(kāi)場(chǎng)文字最終效果圖
一.制作字幕效果
1.新建一個(gè)電影,在屬性面板中設(shè)置其尺寸為550pxX400px,選擇一種顏色(本例為#000000)作為背景色。
2.雙擊時(shí)間線上的“圖層1”,并將其改為“caption”,主要用于旋置文字的圖形元件,在工具箱中選取文本工具,并在屬性面板中設(shè)置文字的顏色、字體和大小,本例設(shè)置文本的顏色為#CCCC00,大小為40,字體為Times New Roman,當(dāng)然也可以設(shè)置為其它屬性。設(shè)定好后,點(diǎn)擊舞臺(tái)并寫上字幕文字,如圖3所示。
圖3 在舞臺(tái)上輸入的文字
3.接下來(lái)該是給文字添加一點(diǎn)透視效果的時(shí)候了。選中寫好的字幕文字,按兩下Ctrl+B將文字分離成為色塊。這是因?yàn)橄乱徊降淖冃我笃鋵?duì)象必須是色塊。從工具箱中選取任意變形工具 ,然后從選項(xiàng)面板中的扭曲按鈕 。將分離后的文本能過(guò)調(diào)整四個(gè)角上的手柄,使整個(gè)變形框成一梯形,效果如圖4所示。
圖4 調(diào)整手柄
4.變形完畢后選擇“插入/轉(zhuǎn)換為元件”菜單命令,將變形后的字幕轉(zhuǎn)換為圖形元件,并為其命名為“caption”
選中字幕后選擇按“Ctrl+T”,打開(kāi)Transfrom(變形)面板。調(diào)整縮放比例的數(shù)值,使第一行字的大小與未進(jìn)行透視變形前差不多,如圖5所示。
圖5 變形面板
5.將字幕元件拖動(dòng)到舞臺(tái)下方邊緣之外,如圖6所示:
圖6 拖動(dòng)字幕
6.點(diǎn)擊時(shí)間線上的第200幀,按F6插入一個(gè)關(guān)鍵幀。選中第200幀上的字幕元件,使用Transform(變形)面板將其縮小后將其拖到舞臺(tái)中上方,如圖7所示。
圖7 縮小字幕元件
7.右擊第1幀,在彈出的快捷菜單上選擇“創(chuàng)建補(bǔ)間動(dòng)畫”,將第1到第200幀轉(zhuǎn)化為運(yùn)動(dòng)中間幀動(dòng)畫。按Enter鍵看動(dòng)畫的效果的時(shí)候你會(huì)發(fā)現(xiàn),整個(gè)字幕運(yùn)動(dòng)過(guò)程的前半部分相對(duì)后面結(jié)束部分的速度要慢一些。所以,需要對(duì)運(yùn)動(dòng)的速度進(jìn)行一些調(diào)整。選中第1幀,在屬性面板中將其中的簡(jiǎn)易選項(xiàng)設(shè)為某個(gè)正值,如圖8示。如此,字幕運(yùn)動(dòng)的后半部分就會(huì)放慢速度了。
圖8 屬性面板
二.制作背景
1.新建一圖層,并為其命名為“stars”,然后將這個(gè)圖層拖動(dòng)到字幕層“caption”的下面,打開(kāi)Actions(動(dòng)作)面板。選中stars圖層的第一幀后在Actions面板中輸入以下代碼(注釋號(hào)“//”后的內(nèi)容可不輸)
iMax = 400;
//星星總數(shù)。
sClipName = "starbg";
//背景影片剪輯名字
iStarSizeMax = 2;
//星星大?。ㄗ畲笾担?br>
iStarSizeMin = 1;
//星星大?。ㄗ钚≈担?br>
iStarAlphaMax = 100;
//星星透明度(最大值)
iStarAlphaMin = 80;
//星星透明度(最小值)
this.createEmptyMovieClip(sClipName, 0);
//創(chuàng)建一個(gè)空白的背景影片剪輯。
for (i=1; i<=iMax; i++) {
iStarX = Stage.width*Math.random();
//星星的X軸坐標(biāo)
iStarY = Stage.height*Math.random();
//星星的Y軸坐標(biāo)
iStarSize = (iStarSizeMax-iStarSizeMin)*Math.random()+iStarSizeMin;
//星星的大小
iStarAlpha = (iStarAlphaMax-iStarAlphaMin)*Math.random()+iStarAlphaMin;
//星星的透明度
iStarColor = 0xffffff;
//星星的顏色
with (this[sClipName]) {
lineStyle(iStarSize, iStarColor, iStarAlpha);
//設(shè)定畫星星畫筆的大小,顏色,透明度
moveTo(iStarX-1, iStarY);
//將畫筆移動(dòng)到要繪制星星的位置
lineTo(iStarX, iStarY);
//繪制一條從點(diǎn)(iStarX-1,iStarY)到點(diǎn)(iStarX,iStarY)之間的,長(zhǎng)度為一個(gè)像素的直線
}
}
程序詳解:
第1行到第12行是一些簡(jiǎn)單的變量聲明。其中,變量iMax的值就是背景上將出現(xiàn)的星星的個(gè)數(shù)。sClipName是用來(lái)繪制星空背景的影片剪輯(也就是圖1-93的表識(shí)為2的那一層)的名字。第5到第8行的兩個(gè)變量對(duì)應(yīng)的是星星的最大尺寸和最小尺寸。iStarSizeMax最好不要太大,因?yàn)檫@個(gè)值越大效果越差。第9到第12行所確定的是星星透明度的最大值與最小值,而這個(gè)透明度反映出來(lái)的效果就是星星的亮度。
第13行的createEmptyMovieClip方法是Flash MX中的新東西。具體語(yǔ)法是:
myMovieClip.createEmptyMovieClip (instanceName, depth)
其作用是在myMovieClip中創(chuàng)建一個(gè)名為instanceName的空白影片剪輯(空白=什么都沒(méi)有),它在myMovieClip中的深度為depth。這也就是說(shuō),要引用這個(gè)新影片剪輯的話,可以使用myMovieClip.instanceName或myMovieClip[instanceName]這兩種語(yǔ)法。在本例中,myMovieClip參數(shù)的位置上寫的是this對(duì)象,即當(dāng)前影片剪輯。所以這第13行程序的意思就是,在當(dāng)前影片剪輯中創(chuàng)建一個(gè)名字為sClipName(這個(gè)變量的值是“starbg”)的空白影片剪輯,其放置的深度為1。
第15行到最后是個(gè)for循環(huán),它是繪制星星的主要程序段。第16到33行是循環(huán)的主體,其中,第16到23行使用同一條隨機(jī)數(shù)公式來(lái)隨機(jī)設(shè)定每顆星星的大小、透明度,為下面的繪制過(guò)程作準(zhǔn)備。這條用來(lái)獲得給定范圍內(nèi)隨機(jī)數(shù)的公式是:(最大值 — 最小值)× 隨機(jī)數(shù)函數(shù) + 最小值。注意,這條公式中所使用的隨機(jī)數(shù)函數(shù)必須是返回0和1之間(包括0)隨機(jī)數(shù)的隨機(jī)函數(shù),F(xiàn)lash MX中的隨機(jī)函數(shù)Math.random()就符合這個(gè)要求。
再回頭來(lái)看看程序。這第16與18行的程序似乎跟上面的公式不一樣嘛!乍看之下,的確,這兩行程序似乎是不一樣。但是,如果當(dāng)上面那條公式中的最小值等于0時(shí),公式會(huì)變形為:最大值 × 隨機(jī)數(shù)函數(shù)。這樣就和16、18行很符合了。iStarX和iStarY變量分別代表的是星星在舞臺(tái)上橫坐標(biāo)和縱坐標(biāo),所以這里分別用舞臺(tái)的寬(Stage.width)和高(Stage.height)乘以隨機(jī)函數(shù)來(lái)得到舞臺(tái)之內(nèi)的某組橫、縱坐標(biāo)值。而iStarSize與iStarAlpha分別表示了星星的大小和透明度,這兩條使用的就是標(biāo)準(zhǔn)的隨機(jī)數(shù)公式了。iStarColor用以表示星星的顏色(其實(shí)也是可以改用隨機(jī)公式來(lái)確定的),這里使用0xffffff,即純白色。
第26到33行是真正動(dòng)筆繪制的時(shí)候。首先,第26行用了一個(gè)with語(yǔ)句,這條語(yǔ)句始現(xiàn)于Flash 5,具體語(yǔ)法為:
with (object) {
statement(s);
}
使用這條語(yǔ)句可以讓你在兩個(gè)花括號(hào)間直接設(shè)置對(duì)象object的屬性,而不需要在每個(gè)屬性前面再加上object的引用。例如,要設(shè)置影片剪輯mc的_x屬性,可以寫成:
mc._x=100;
而使用with語(yǔ)句就可以寫成:
with (mc) {
_x=100;
}
使用with語(yǔ)句可以將某一對(duì)象的屬性設(shè)定或方法調(diào)用都集中在一起,從而使程序的實(shí)現(xiàn)更加結(jié)構(gòu)化,清晰化。當(dāng)然,象上面例子這種,只設(shè)置單個(gè)或少數(shù)屬性的情況下,with語(yǔ)句的好處是比較難體現(xiàn)的。
程序中with語(yǔ)句的object參數(shù)是this[sClipName],即第13行程序創(chuàng)建的新影片剪輯starbg。所以,下面花括號(hào)中的操作都是針對(duì)starbg進(jìn)行的。第27到32行用的是Flash MX中新添功能Drawing Method(繪圖方法)中的三條——lineStyle、moveTo和lineTo方法。
lineStyle具體語(yǔ)法如下:
myMovieClip.lineStyle ([thickness[,rgb[,alpha]]])
myMovieClip是要進(jìn)行設(shè)置的影片剪輯的名字。參數(shù)thickness,rgb,alpha分別表示線的粗度,16進(jìn)制形式的顏色值和透明度。如果什么參數(shù)也不給的話,那么屏幕將畫不出任何線。
moveTo具體語(yǔ)法如下:
myMovieClip.moveTo (x,y)
將畫筆移動(dòng)到坐標(biāo)為(x,y)的點(diǎn)上。這條語(yǔ)句只負(fù)責(zé)移動(dòng)畫筆并不實(shí)際進(jìn)行任何的繪圖操作。
lineTo具體語(yǔ)法如下:
myMovieClip.lineTo (x,y)
在畫筆當(dāng)前所在位置和參數(shù)所指定的坐標(biāo)(x,y)之間畫一條直線。例如,當(dāng)前畫筆在坐標(biāo)為(0,0)的點(diǎn)上,執(zhí)行一條lineTo(10,10)之后,就會(huì)在(0,0)到(10,10)之間出現(xiàn)一條直線。注意,在調(diào)用這個(gè)方法之前一定要先調(diào)用lineStyle方法設(shè)置好線的屬性,否則你將畫不出任何東西。
2.到了這里,整個(gè)例子可以說(shuō)是基本上完成了。但為了能讓字幕有一點(diǎn)點(diǎn)消失在黑色的星空之中的效果,再給它添加個(gè)“簾子”。新建一圖層,并為其命名為“shade”,按Shift+F9鍵,打開(kāi)“混色器”面板。將填充樣式改為“線型漸變”后指定兩個(gè)黑色指針,并將其中一個(gè)的Alpha值設(shè)定為0%,即完全透明,如圖9所示。
圖9 設(shè)置“混色器”面板
3.從工具箱中選取“矩形”工具。在屬性面板中設(shè)定邊框色為無(wú)色,填充色為上面設(shè)定的線性漸變。點(diǎn)擊第200幀,在shade上畫一個(gè)漸變矩形色塊,大小應(yīng)比下面caption層上字幕的尺寸略大,從工具箱中選取“填充變形”工具 。然后點(diǎn)擊漸變色塊,調(diào)整手柄將漸變的方向改為透明部分朝下,調(diào)整漸變方向,效果如圖如圖10所示。
圖10 調(diào)整漸變方向
4.保存影片,按“Ctrl+Enter”預(yù)覽就可以看到漂亮的“星球大戰(zhàn)”開(kāi)場(chǎng)文字。
------------------------------- · 相關(guān)文檔瀏覽 · --------------------------------------------------------------------- · 熱門文檔瀏覽 · -------------------------------------