Flash AS 入門(mén) onClipEvent()事件處理函數(shù)

這篇教程為“Flash AS 入門(mén)教程”的一部分。查看全套教程>>>>。
本節(jié)應(yīng)掌握的知識(shí)要點(diǎn):
① onClipEvent()應(yīng)用;②_xmouse 屬性;③int函數(shù)應(yīng)用。
onClipExent()是一個(gè)事件處理函數(shù),也是在Flash動(dòng)作腳本中使用頻率非常高的一個(gè)語(yǔ)句,其功能是觸發(fā)為特定影片剪輯實(shí)例定義的動(dòng)作。這個(gè)事件處理函數(shù)只能添加在影片剪輯實(shí)例上,不同于on()事件處理函數(shù)可以分別添加在影片剪輯和按鈕上。
語(yǔ)法格式是:
onClipEvent(movieEvent){
要執(zhí)行的語(yǔ)句
}
小括號(hào)中的參數(shù)movieEvent 是一個(gè)稱(chēng)作事件的觸發(fā)器。當(dāng)事件發(fā)生時(shí),執(zhí)行后面大括號(hào)中的語(yǔ)句。
這一節(jié)要學(xué)習(xí)的是兩個(gè)最常用的事件:
load事件,是當(dāng)影片剪輯實(shí)例出現(xiàn)在時(shí)間軸中時(shí),即執(zhí)行大括號(hào)中的語(yǔ)句塊,語(yǔ)句快只執(zhí)行一次。
enterFrame事件,是以與影片剪輯幀頻相同的速率不斷重復(fù)觸發(fā)的動(dòng)作。
請(qǐng)看示例動(dòng)畫(huà)“實(shí)例1-10”。
>>>>>點(diǎn)擊查看動(dòng)畫(huà)效果<<<<<
實(shí)例1-10 onClipExent()應(yīng)用
動(dòng)畫(huà)開(kāi)始播放時(shí),畫(huà)面上一只小松鼠在場(chǎng)景上原地跳躍,點(diǎn)擊右下角按鈕即會(huì)增加一只小松鼠的倒影,場(chǎng)景右下角出現(xiàn)了兩行動(dòng)態(tài)文本,顯示的是場(chǎng)景上鼠標(biāo)的橫坐標(biāo)位置。這時(shí)移動(dòng)鼠標(biāo)小松鼠會(huì)隨著鼠標(biāo)移動(dòng),同時(shí)下面一行文本的坐標(biāo)數(shù)值會(huì)隨著鼠標(biāo)的移動(dòng)不斷的更新,而上面的一行文本卻始終顯示一個(gè)固定的數(shù)值。
分析一下源文件,場(chǎng)景上5個(gè)圖層共兩幀,【松鼠mc】圖層上有一個(gè)實(shí)例名為shu_mc的影片剪輯實(shí)例,【動(dòng)態(tài)文本】圖層上有上下兩個(gè)動(dòng)態(tài)文本框,變量名分別為t1_txt、t2_txt,【空白mc】圖層第1幀是一個(gè)空白關(guān)鍵幀,第2幀上有一個(gè)空白影片剪輯實(shí)例(注意,因?yàn)闆](méi)有實(shí)際內(nèi)容,這個(gè)影片剪輯在場(chǎng)景上只能看見(jiàn)一個(gè)白色小圓圈),【按鈕】圖層第1幀和第2幀上各有一個(gè)按鈕。
下面我們來(lái)看看源文件中的語(yǔ)句,通過(guò)前面的學(xué)習(xí),大家對(duì)以下語(yǔ)句應(yīng)該非常熟悉,不用注釋也能看明白了。
第1幀上:stop();
第1幀的按鈕上:on (press) {
play();
}
空白影片剪輯上:
onClipEvent (load) { //當(dāng)當(dāng)前影片剪輯一旦出現(xiàn)在時(shí)間軸上,即激發(fā)以下動(dòng)作
_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)前影片剪輯存在在時(shí)間軸上,就不斷重復(fù)執(zhí)行以下動(dòng)作
_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();
}
我們來(lái)分析一下語(yǔ)句的執(zhí)行流程:
動(dòng)畫(huà)開(kāi)始播放即停止在第1幀,點(diǎn)擊按鈕開(kāi)始播放,當(dāng)進(jìn)入第2幀時(shí),添加有onClipEvent語(yǔ)句的影片剪輯出現(xiàn)在時(shí)間軸上,這時(shí),動(dòng)畫(huà)的播放由這個(gè)影片剪輯上的語(yǔ)句進(jìn)行控制。
首先執(zhí)行onClipEvent(load)大括號(hào)中的語(yǔ)句塊,load事件是當(dāng)影片剪輯一旦出現(xiàn)在時(shí)間線上時(shí)觸發(fā)的動(dòng)作,_root.stop();令播放頭停止在場(chǎng)景第2幀,接下來(lái)復(fù)制出一個(gè)shu_mc影片剪輯,命名為“shu_mc1”,設(shè)置層深度為1,再由下面的兩行語(yǔ)句為新復(fù)制出的影片剪輯設(shè)置屬性,將縱向縮放比例設(shè)置為-100(單位為百分比),使其倒置在場(chǎng)景上,將透明度屬性設(shè)置為50%,由最后一條語(yǔ)句,在場(chǎng)景上的t1_txt動(dòng)態(tài)文本框中顯示字符串"_xmouse= "并上鼠標(biāo)當(dāng)前的橫坐標(biāo)值,這個(gè)值由int函數(shù)轉(zhuǎn)換為整數(shù)。到此,load事件里的語(yǔ)句塊就執(zhí)行完了。
由于load事件里的語(yǔ)句只執(zhí)行一次,所以場(chǎng)景上的t1_txt動(dòng)態(tài)文本框里顯示的鼠標(biāo)橫坐標(biāo)值始終是一個(gè)固定的數(shù)值。
接下來(lái),開(kāi)始執(zhí)行enterFrame事件里面的語(yǔ)句塊,由第1行語(yǔ)句定義,將場(chǎng)景上鼠標(biāo)的橫坐標(biāo)位置減去50像素的這個(gè)值,賦予場(chǎng)景上shu_mc影片剪輯的橫坐標(biāo),即shu_mc的橫坐標(biāo)位置與當(dāng)前鼠標(biāo)位置相距50像素,動(dòng)畫(huà)的實(shí)際效果是小松鼠位于鼠標(biāo)箭頭的左側(cè),再由第2行語(yǔ)句將shu_mc的橫坐標(biāo)值賦予新復(fù)制出的影片剪輯shu_mc1的橫坐標(biāo)。最后一條語(yǔ)句和上面load事件的最后一條相同,是在場(chǎng)景上的t2_txt文本框中以整數(shù)顯示鼠標(biāo)當(dāng)前的橫坐標(biāo)位置。
到此enterFrame事件里面的語(yǔ)句塊就執(zhí)行完了一次,但是,語(yǔ)句的執(zhí)行并沒(méi)有到此為止,只要當(dāng)前影片剪輯(即這個(gè)空白影片剪輯)存在在時(shí)間軸上,這個(gè)語(yǔ)句快中的動(dòng)作就會(huì)不斷的重復(fù)執(zhí)行,其執(zhí)行的速率與當(dāng)前影片的幀頻相同。
由于enterFrame事件里面的語(yǔ)句塊是不斷重復(fù)執(zhí)行的,由此就實(shí)現(xiàn)了不斷的計(jì)算當(dāng)前鼠標(biāo)的橫坐標(biāo)位置,并將它減去50像素后的新值不斷賦予shu_mc影片剪輯,再將這個(gè)值不斷的賦予shu_mc1影片剪輯,同時(shí),動(dòng)態(tài)文本框t2_txt中也在不斷的更新鼠標(biāo)位置的坐標(biāo)值。
實(shí)現(xiàn)的動(dòng)畫(huà)實(shí)際效果就是,場(chǎng)景上的小松鼠和倒影不斷的跟著鼠標(biāo)移動(dòng)下面的動(dòng)態(tài)文本框中不斷的更新顯示鼠標(biāo)的橫坐標(biāo)位置。而上面的動(dòng)態(tài)文本框中始終是一個(gè)固定的數(shù)值。
當(dāng)我們點(diǎn)擊場(chǎng)景上的按鈕時(shí),新復(fù)制出的shu_mc1影片剪輯被刪除,并由play動(dòng)作指令影片繼續(xù)播放,由于場(chǎng)景上只有兩幀,所以播放頭直接返回時(shí)間軸第1幀,到了第1幀,又由幀動(dòng)作腳本stop指令其在第1幀停止播放,這時(shí)候我們看到的動(dòng)畫(huà)效果是,場(chǎng)景上的小松鼠倒影消失了,動(dòng)態(tài)文本框停止了更新鼠標(biāo)的橫坐標(biāo)值,小松鼠也不跟隨著鼠標(biāo)移動(dòng)了。這是因?yàn)榧虞d有onClipEvent函數(shù)的空白影片剪輯已經(jīng)從時(shí)間軸上消失了。
當(dāng)再次點(diǎn)擊場(chǎng)景上的按鈕時(shí),播放頭進(jìn)入第2幀,空白影片剪輯出現(xiàn)在場(chǎng)景上,于是又開(kāi)始執(zhí)行onClipEvent函數(shù)中的動(dòng)作。
課后練習(xí):素材源文件下載
在素材源文件中按如下要求完成練習(xí):
1. 在【文本】圖層創(chuàng)建3個(gè)動(dòng)態(tài)文本框。
2. 點(diǎn)擊場(chǎng)景第1幀上的按鈕,進(jìn)入第2幀
3. 在第2幀創(chuàng)建一個(gè)空白影片剪輯,在空白影片剪輯上添加onClipEvent函數(shù),實(shí)現(xiàn)的效果是:
①使場(chǎng)景上的小松鼠翻轉(zhuǎn)身面朝左面;
②復(fù)制出一只新的小松鼠跟在其身后;
?、凼髽?biāo)指針、小松鼠、新復(fù)制出的小松鼠之間橫坐標(biāo)均相距10個(gè)像素;兩只小松鼠跟隨鼠標(biāo)移動(dòng);
?、?個(gè)動(dòng)態(tài)文本框中分別顯示鼠標(biāo)、小松鼠、新復(fù)制的小松鼠的橫坐標(biāo)位置,并不斷動(dòng)態(tài)更新。
4. 點(diǎn)擊按鈕時(shí)刪除復(fù)制出的小松鼠,原來(lái)的小松鼠返回到場(chǎng)景中的水平中點(diǎn)位置,并回轉(zhuǎn)身面朝右方,播放頭返回第1幀,動(dòng)態(tài)文本也停止更新。
>>>>>點(diǎn)擊查看動(dòng)畫(huà)效果<<<<<
課后練習(xí)1-10效果。
這篇教程為“Flash AS 入門(mén)教程”的一部分。查看全套教程>>>>。
相關(guān)文章
flash cs6鼠標(biāo)跟隨效果實(shí)現(xiàn)代碼分享
flash cs6想要實(shí)現(xiàn)鼠標(biāo)跟隨效果?該怎么制作呢?今天我們就來(lái)看看使用as2.0實(shí)現(xiàn)鼠標(biāo)跟隨效果的教程,需要的朋友可以參考下2019-05-19- Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來(lái)輸入文本,該怎么使用代碼輸入文本呢?請(qǐng)看下文詳細(xì)的教程,需要的朋友2018-03-11
- flash as3.0抽象類(lèi)怎么定義? as3.0中有很多抽象類(lèi),該怎么定義抽象類(lèi)和抽象方法呢?下面我們就來(lái)看看簡(jiǎn)單的例子,需要的朋友可以參考下http://chabaoo.cn/softs/408402.2018-02-28
flash cs6中怎么使用ActionScript3.0?
flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來(lái)看看詳細(xì)的教程,需要的朋友可以參考下2018-01-25Flash中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?
本教程給大家分享一個(gè)Flash小教程,教大家在Flash CS6中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?方法很簡(jiǎn)單,感興趣的朋友歡迎前來(lái)一起分享學(xué)習(xí)2018-01-12Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置?
本教程教腳本之家的ActionScript教程學(xué)習(xí)者在Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置,教程講解的詳細(xì),感興趣的朋友歡迎前來(lái)分享學(xué)習(xí)2017-11-20在Flash CS6中使用with函數(shù)繪制背景圖教程
本教程教腳本之家的ActionScript教程學(xué)習(xí)者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細(xì),方法也不難,非常適合Flash新手入門(mén)學(xué)習(xí)2017-11-18Flash怎么設(shè)置元件坐標(biāo)?flash使用代碼設(shè)置元件的坐標(biāo)的教程
Flash怎么設(shè)置元件坐標(biāo)?flash中導(dǎo)如的元件需要添加坐標(biāo),該怎么定位元件坐標(biāo)呢?下面我們就來(lái)看看flash使用代碼設(shè)置元件的坐標(biāo)的教程,需要的朋友可以參考下2017-10-11Flash怎么制作來(lái)回?fù)u擺的花朵的動(dòng)畫(huà)?
Flash怎么制作來(lái)回?fù)u擺的花朵的動(dòng)畫(huà)?Flash中想要給花朵制作一段搖擺的動(dòng)畫(huà)效果,該怎么制作呢?下面我們就來(lái)看看詳細(xì)的教程,很簡(jiǎn)單,需要的朋友可以參考下2017-05-23- Flash怎么制作流動(dòng)七彩色的文字?想要讓文字動(dòng)起來(lái),該怎么使用flash給文字制作一個(gè)流動(dòng)七彩色的動(dòng)畫(huà)呢?下面我們就來(lái)看看詳細(xì)的教程,需要的朋友可以參考下2017-04-23