這篇教程為“Flash AS 入門教程”的一部分。查看全套教程>>>>。
源文件下載
本節(jié)應(yīng)掌握的知識要點:
① onClipEvent()應(yīng)用;②_xmouse 屬性;③int函數(shù)應(yīng)用。
onClipExent()是一個事件處理函數(shù),也是在Flash動作腳本中使用頻率非常高的一個語句,其功能是觸發(fā)為特定影片剪輯實例定義的動作。這個事件處理函數(shù)只能添加在影片剪輯實例上,不同于on()事件處理函數(shù)可以分別添加在影片剪輯和按鈕上。
語法格式是:
onClipEvent(movieEvent){
要執(zhí)行的語句
}
小括號中的參數(shù)movieEvent 是一個稱作事件的觸發(fā)器。當(dāng)事件發(fā)生時,執(zhí)行后面大括號中的語句。
這一節(jié)要學(xué)習(xí)的是兩個最常用的事件:
load事件,是當(dāng)影片剪輯實例出現(xiàn)在時間軸中時,即執(zhí)行大括號中的語句塊,語句快只執(zhí)行一次。
enterFrame事件,是以與影片剪輯幀頻相同的速率不斷重復(fù)觸發(fā)的動作。
請看示例動畫“實例1-10”。
>>>>>點擊查看動畫效果<<<<<
實例1-10 onClipExent()應(yīng)用
動畫開始播放時,畫面上一只小松鼠在場景上原地跳躍,點擊右下角按鈕即會增加一只小松鼠的倒影,場景右下角出現(xiàn)了兩行動態(tài)文本,顯示的是場景上鼠標(biāo)的橫坐標(biāo)位置。這時移動鼠標(biāo)小松鼠會隨著鼠標(biāo)移動,同時下面一行文本的坐標(biāo)數(shù)值會隨著鼠標(biāo)的移動不斷的更新,而上面的一行文本卻始終顯示一個固定的數(shù)值。
分析一下源文件,場景上5個圖層共兩幀,【松鼠mc】圖層上有一個實例名為shu_mc的影片剪輯實例,【動態(tài)文本】圖層上有上下兩個動態(tài)文本框,變量名分別為t1_txt、t2_txt,【空白mc】圖層第1幀是一個空白關(guān)鍵幀,第2幀上有一個空白影片剪輯實例(注意,因為沒有實際內(nèi)容,這個影片剪輯在場景上只能看見一個白色小圓圈),【按鈕】圖層第1幀和第2幀上各有一個按鈕。
下面我們來看看源文件中的語句,通過前面的學(xué)習(xí),大家對以下語句應(yīng)該非常熟悉,不用注釋也能看明白了。
第1幀上:stop();
第1幀的按鈕上:on (press) {
play();
}
空白影片剪輯上:
onClipEvent (load) { //當(dāng)當(dāng)前影片剪輯一旦出現(xiàn)在時間軸上,即激發(fā)以下動作
_root.stop();
_root.shu_mc.duplicateMovieClip("shu_mc1", 1);
_root.shu_mc1._yscale = -100;
_root.shu_mc1._alpha = 50;
_root.t1_txt = "_xmouse= "+int(_root._xmouse);
//_xmouse 鼠標(biāo)的x坐標(biāo)位置。int 取整函數(shù),將十進(jìn)制的數(shù)字轉(zhuǎn)換為最相近的整數(shù)值。
}
onClipEvent (enterFrame) { //只要當(dāng)前影片剪輯存在在時間軸上,就不斷重復(fù)執(zhí)行以下動作
_root.shu_mc._x = _root._xmouse-50;
_root.shu_mc1._x = _root.shu_mc._x;
_root.t2_txt = "_xmouse= "+int(_root._xmouse);
}
第2幀的按鈕上:on (press) {
removeMovieClip(shu_mc1);
play();
}
我們來分析一下語句的執(zhí)行流程:
動畫開始播放即停止在第1幀,點擊按鈕開始播放,當(dāng)進(jìn)入第2幀時,添加有onClipEvent語句的影片剪輯出現(xiàn)在時間軸上,這時,動畫的播放由這個影片剪輯上的語句進(jìn)行控制。
首先執(zhí)行onClipEvent(load)大括號中的語句塊,load事件是當(dāng)影片剪輯一旦出現(xiàn)在時間線上時觸發(fā)的動作,_root.stop();令播放頭停止在場景第2幀,接下來復(fù)制出一個shu_mc影片剪輯,命名為“shu_mc1”,設(shè)置層深度為1,再由下面的兩行語句為新復(fù)制出的影片剪輯設(shè)置屬性,將縱向縮放比例設(shè)置為-100(單位為百分比),使其倒置在場景上,將透明度屬性設(shè)置為50%,由最后一條語句,在場景上的t1_txt動態(tài)文本框中顯示字符串"_xmouse= "并上鼠標(biāo)當(dāng)前的橫坐標(biāo)值,這個值由int函數(shù)轉(zhuǎn)換為整數(shù)。到此,load事件里的語句塊就執(zhí)行完了。
由于load事件里的語句只執(zhí)行一次,所以場景上的t1_txt動態(tài)文本框里顯示的鼠標(biāo)橫坐標(biāo)值始終是一個固定的數(shù)值。
接下來,開始執(zhí)行enterFrame事件里面的語句塊,由第1行語句定義,將場景上鼠標(biāo)的橫坐標(biāo)位置減去50像素的這個值,賦予場景上shu_mc影片剪輯的橫坐標(biāo),即shu_mc的橫坐標(biāo)位置與當(dāng)前鼠標(biāo)位置相距50像素,動畫的實際效果是小松鼠位于鼠標(biāo)箭頭的左側(cè),再由第2行語句將shu_mc的橫坐標(biāo)值賦予新復(fù)制出的影片剪輯shu_mc1的橫坐標(biāo)。最后一條語句和上面load事件的最后一條相同,是在場景上的t2_txt文本框中以整數(shù)顯示鼠標(biāo)當(dāng)前的橫坐標(biāo)位置。
到此enterFrame事件里面的語句塊就執(zhí)行完了一次,但是,語句的執(zhí)行并沒有到此為止,只要當(dāng)前影片剪輯(即這個空白影片剪輯)存在在時間軸上,這個語句快中的動作就會不斷的重復(fù)執(zhí)行,其執(zhí)行的速率與當(dāng)前影片的幀頻相同。
由于enterFrame事件里面的語句塊是不斷重復(fù)執(zhí)行的,由此就實現(xiàn)了不斷的計算當(dāng)前鼠標(biāo)的橫坐標(biāo)位置,并將它減去50像素后的新值不斷賦予shu_mc影片剪輯,再將這個值不斷的賦予shu_mc1影片剪輯,同時,動態(tài)文本框t2_txt中也在不斷的更新鼠標(biāo)位置的坐標(biāo)值。
實現(xiàn)的動畫實際效果就是,場景上的小松鼠和倒影不斷的跟著鼠標(biāo)移動下面的動態(tài)文本框中不斷的更新顯示鼠標(biāo)的橫坐標(biāo)位置。而上面的動態(tài)文本框中始終是一個固定的數(shù)值。
當(dāng)我們點擊場景上的按鈕時,新復(fù)制出的shu_mc1影片剪輯被刪除,并由play動作指令影片繼續(xù)播放,由于場景上只有兩幀,所以播放頭直接返回時間軸第1幀,到了第1幀,又由幀動作腳本stop指令其在第1幀停止播放,這時候我們看到的動畫效果是,場景上的小松鼠倒影消失了,動態(tài)文本框停止了更新鼠標(biāo)的橫坐標(biāo)值,小松鼠也不跟隨著鼠標(biāo)移動了。這是因為加載有onClipEvent函數(shù)的空白影片剪輯已經(jīng)從時間軸上消失了。
當(dāng)再次點擊場景上的按鈕時,播放頭進(jìn)入第2幀,空白影片剪輯出現(xiàn)在場景上,于是又開始執(zhí)行onClipEvent函數(shù)中的動作。
課后練習(xí):素材源文件下載
在素材源文件中按如下要求完成練習(xí):
1. 在【文本】圖層創(chuàng)建3個動態(tài)文本框。
2. 點擊場景第1幀上的按鈕,進(jìn)入第2幀
3. 在第2幀創(chuàng)建一個空白影片剪輯,在空白影片剪輯上添加onClipEvent函數(shù),實現(xiàn)的效果是:
①使場景上的小松鼠翻轉(zhuǎn)身面朝左面;
②復(fù)制出一只新的小松鼠跟在其身后;
③鼠標(biāo)指針、小松鼠、新復(fù)制出的小松鼠之間橫坐標(biāo)均相距10個像素;兩只小松鼠跟隨鼠標(biāo)移動;
④3個動態(tài)文本框中分別顯示鼠標(biāo)、小松鼠、新復(fù)制的小松鼠的橫坐標(biāo)位置,并不斷動態(tài)更新。
4. 點擊按鈕時刪除復(fù)制出的小松鼠,原來的小松鼠返回到場景中的水平中點位置,并回轉(zhuǎn)身面朝右方,播放頭返回第1幀,動態(tài)文本也停止更新。
>>>>>點擊查看動畫效果<<<<<
課后練習(xí)1-10效果。
這篇教程為“Flash AS 入門教程”的一部分。查看全套教程>>>>。
新聞熱點
疑難解答