摘要:各種編程語言都有各自的編程環(huán)境和語法結(jié)構(gòu)的特點,該文主要介紹Flash中ActionScript的編程環(huán)境和語法結(jié)構(gòu)的特點。
關(guān)鍵詞:影片剪輯;對象;事件
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)15-3622-03
學(xué)過動畫制作的人都有這樣一個體會,要制作出一個好的Flash動畫,使用AS編寫動作腳本是必不可少的,即使只是很簡單的幾句代碼,也會在整個Flash動畫中起到畫龍點睛的作用。然而,AS又有別于其他的編程語言,它的編程環(huán)境、語法結(jié)構(gòu)有自己的特點和規(guī)則,需要我們在使用之前有一定的了解。
1 AS的編程環(huán)境
選取某一楨、某一個按鈕或某一個影片剪輯元件的實例,右鍵打開動作面板,就進入了AS的編程環(huán)境。
1)幀:要把AS寫在楨上,需要選取這一楨,右鍵打開動作面板。寫在關(guān)鍵幀上面的AS,當時間軸上的指針走到這個關(guān)鍵幀的時候,寫在這個幀上面的AS就被觸發(fā)執(zhí)行了。
實例:選取影片結(jié)尾的一個關(guān)鍵幀,然后打開AS面板,在楨上寫入stop()。那么在播放影片的時候,播放到最后一楨時,將會停止。
2)按鈕:要把AS寫在按鈕上,需要點選目標按鈕,右鍵打開動作面板。與幀上的AS不同,按鈕上面的AS是要有觸發(fā)條件的。
實例:要實現(xiàn)按下按鈕后停止播放影片,那么我們需要做一個按鈕,放到主場景,點選按鈕,然后打開AS面板。如果在按鈕上寫stop();那么,輸出的時候就會提示錯誤。正確的應(yīng)該這樣寫:
on(release){
stop();
}
整個代碼翻譯過來就是: 當(松開鼠標){停止播放}。寫在按鈕上面的AS的格式應(yīng)該是:on(發(fā)生的事件){要執(zhí)行的動作代碼}
3)影片剪輯MC:寫在MC上面的AS和寫在按鈕上的大同小異。首先點選MC,然后右鍵打開AS面板。
實例:要實現(xiàn)播放影片時先停止場景中影片剪輯MC的播放,需要先點選影片剪輯MC,在打開的動作面板上輸入如下代碼:
onClipEvent(load){
stop();
}
整個代碼翻譯過來就是:當影片剪輯(載入){停止播放}。寫在影片剪輯上面的AS的格式應(yīng)該是:on影片剪輯(發(fā)生的事件){要執(zhí)行的動作代碼}。
2 AS的語法結(jié)構(gòu)
2.1 AS中的對象
雖然AS不是真正的面向?qū)ο蟮木幊陶Z言,但是它也有對象的概念。這個概念貫穿整個AS的始終,所以,對對象的理解,比對語法或其他的理解更為重要。
在前面的實例中我們可以看到,AS中任何動作都離不開楨、影片剪輯和按鈕這些元素,他們是動作的主體,有時是執(zhí)行動作的主體,有時又是被執(zhí)行動作的主體,在AS中,我們稱它們?yōu)閷ο蟆?/p>
2.2AS中對象的路徑
AS中對象的路徑用點語法來表示。路徑分兩種:絕對路徑和相對路徑。
2.2.1 絕對路徑
例如:要指定場景里面的一個影片剪輯里面的按鈕對象,需要這樣確定他的路徑“場景.影片剪輯.按鈕”,即“場景(里面的)影片剪輯(里面的)按鈕”。這是絕對路徑。
實例:要實現(xiàn)播放場景(_root)里面的MC,需要輸入如下代碼:
_root.MC.play();
這里為什么要在play后面加()呢?因為播放是方法不是對象,為了讓Flash知道這是個方法,我們必須加上(), 否則它會以為場景里面有“播放”這個東西。
絕對路徑的語法結(jié)構(gòu)為:對象的絕對路徑.方法()。
2.2.2 相對路徑
例如:主場景中有一個MC,在播放影片的時候我們希望它不被播放,那么我們可以選中它,在動作面板里面輸入如下代碼:
_root.Mc.stop();
那么,當我們把它移動到其它場景當中去或者我們給這個MC改了名字之后,這段代碼就得重新寫了。要實現(xiàn)無論把對象移到哪里區(qū)或者把對象的名字如何改都不影響代碼的執(zhí)行,只需要把我們要執(zhí)行的代碼寫在對象的內(nèi)部就可以了。即在Mc的Timeline的第一幀上寫上如下代碼:
this.stop();
這里的this是Flash的關(guān)鍵詞,指AS所在的這條Timeline,現(xiàn)在不管這個MC放在哪里,名字是什么,肯定會停下來。如果在這里寫上_root.stop();那就錯了。
這個this就是相對路徑的一個關(guān)鍵詞,用來表示“當前指定的這個對象”。另外的一個關(guān)鍵詞就是_parent,用來表示當前指定對象的父級。
例如:“教室.黑板.字”是這樣一個從屬關(guān)系,那么如果在“字”這個對象上寫如下代碼:
_parent.敲();
則表示敲“黑板”,而不是敲“字”。
相對路徑的語法結(jié)構(gòu)為:對象的相對路徑.方法()。
3 AS中的常用事件
AS中的動作代碼通常要依靠一些事件的發(fā)生來觸發(fā),針對按鈕和影片剪輯有幾個常用的事件:
1)按鈕的常用事件:
On(release) {要執(zhí)行的動作代碼}//當(松開){執(zhí)行動作}
On(releaseOutside) {要執(zhí)行的動作代碼}//當(在按鈕外面松開){執(zhí)行動作}
On(press) {要執(zhí)行的動作代碼}//當(按下){執(zhí)行動作}
On(rollover) {要執(zhí)行的動作代碼}//當(鼠標進入按鈕的感應(yīng)區(qū)){執(zhí)行動作}
On(rollout) {要執(zhí)行的動作代碼}//當(鼠標離開按鈕的感應(yīng)區(qū)){執(zhí)行動作}
2)影片剪輯MC的常用事件:
onClipEvent(load){要執(zhí)行的動作代碼}// 當影片剪輯(載入){執(zhí)行動作}
onClipEvent(unload){要執(zhí)行的動作代碼}// 當影片剪輯(卸載){執(zhí)行動作}
onClipEvent(mouseDown){要執(zhí)行的動作代碼}// 當(按下鼠標){執(zhí)行動作}
onClipEvent (mouseMove){要執(zhí)行的動作代碼} //當(移動鼠標){執(zhí)行動作}
onClipEvent (mouseUp){要執(zhí)行的動作代碼} 當//(松開鼠標){執(zhí)行動作}
4 AS中的常用動作代碼
4.1 控制場景播放的動作代碼
play(); //讓時間軸的指針播放
stop(); //把時間軸的指針停止在程序觸發(fā)時候的那個幀
gotoAndPlay(); //讓指針跳轉(zhuǎn)到括號中指定的幀,然后繼續(xù)播放
gotoAndStop(); //讓指針跳轉(zhuǎn)到括號中指定的幀,并停止在那個幀
nextFrame(); //在時間線上往后走一幀
prevFrame(); //在時間線上往前走一幀
實例:制作一個氣泡不斷從水底升起的動畫。
第一步:制作一個氣泡的圖形元件,再制作一個氣泡從水底升起的影片剪輯元件,時間線長度為50楨。
第二步:在場景中拖入多個影片剪輯元件,不規(guī)則分布在場景下方區(qū)域,并位于不同的圖層。
第三步:為每一個圖層上面的元件寫入動作代碼如下:
onClipEvent(load){
gotoAndPlay(n);
}
其中給n賦值1~50之間的數(shù)值即可。
當播放影片時,會出現(xiàn)氣泡不斷從水底升起的動畫。
4.2 描述對象的屬性的代碼
_x //表示對象所在位置的橫坐標
_y //表示對象所在位置的縱坐標
_alpha //表示對象的透明度
_width //表示對象的寬度
_name //描述對象的名稱
實例:使用按鈕控制影片剪輯沿水平方向和豎直方向移動。
第一步:制作一個閃動的星星的影片剪輯元件和一個按鈕元件。
第二步:在場景中拖入一個影片剪輯元件實例,給實例命名為mc1,并拖入一個按鈕元件。
第三步: 在按鈕元件的動作編輯窗口中輸入如下代碼:
on (press) {
mc1._x=mc1._x+20
}
播放影片,當點擊按鈕時,閃動的星星會沿X軸方向向右移動20個像素的位移。同樣的方法可以制作其他按鈕控制閃動的星星元件向左、向上或向下移動。
了解了AS的編程環(huán)境和語法結(jié)構(gòu)的特點,對于進一步學(xué)習(xí)使用Flash的AS編程語言實現(xiàn)更多更復(fù)雜的動畫效果會有很大的幫助。
參考文獻:
[1] 明麗宏,彭德林. Flash CS4中文版模塊教程[M].北京:中國鐵道出版社,2011.
[2] 沈大林,張曉蕾,羅紅霞.《Flash網(wǎng)站設(shè)計師》 就業(yè)技能培訓(xùn)教程(附光盤) [M]. 北京:中國鐵道出版社,2008.
[3] 曹幫琴,陳軍,吳明慧. Flash多媒體課件制作課件[M].北京:中國鐵道出版社,2011.