Flash AS 入門 duplicateMovieClip和removeMovieClip應(yīng)用

這篇教程為“Flash AS 入門教程”的一部分。查看全套教程>>>>。
本節(jié)應(yīng)掌握的知識要點:
?、賒uplicateMovieClip和removeMovieClip應(yīng)用;②_visible屬性應(yīng)用;③數(shù)組應(yīng)用。
復制影片剪輯語句duplicateMovieClip也是在Flash AS 中應(yīng)用非常多的語句,許多精彩的特效都離不開這個語句,其語法格式如下:
duplicateMovieClip(目標, 新名稱, 深度)
“目標”參數(shù)為要進行復制的目標影片剪輯。
“新名稱” 參數(shù)為新復制的影片剪輯的唯一標識符。
“深度” 參數(shù)為新復制的影片剪輯的唯一深度級別。
removeMovieClip是與duplicateMovieClip經(jīng)常配合使用的語句,其作用是用來刪除指定的影片剪輯,格式如下:
removeMovieClip(目標)
“目標”參數(shù)為用 duplicateMovieClip() 創(chuàng)建的影片剪輯實例的目標路徑?;蛘呤怯?MovieClip.attachMovie() 或 MovieClip.duplicateMovieClip() 創(chuàng)建的影片剪輯的實例名稱。
這一節(jié)還要用到一個“_visible”屬性,它返回的是一個用“true”或者“false” 表示的布爾值,用于指令特定的影片剪輯或者按鈕對象可見還是不可見,rue為可見,false為不可見。也可以用1或者0表示,1表示可見,0表示不可見。
請看示例動畫“實例1-6”。
實例1-6 復制和刪除“影片剪輯”
初始的畫面上沒有任何動畫效果,當我們點擊“play”按鈕后,就會依次從場景左側(cè)跳出5只小松鼠,奔跑一個來回后排列在場景左側(cè)原地跳躍。當我們再一次點擊“play”按鈕,會看見5只小松鼠再一次從場景左側(cè)依次跳躍出來,同時場景上原地跳躍的小松鼠會一一消失。這個效果就是應(yīng)用了“duplicateMovieClip”語句實現(xiàn)的。
打開源文件,分析一下影片結(jié)構(gòu),主場景上有10幀,3個圖層,圖層1上是按鈕和背景,圖層2上有一只放置在場景左上角的實例名為shu_mc的小松鼠影片剪輯,進入這個小松鼠的編輯場景,可以看到是一個120幀的補間動畫,第1-60幀,小松鼠由場景左側(cè)運動到右側(cè),第61-120幀,再由右側(cè)回到左側(cè),第120幀上有一個stop動作,令小松鼠運動一個來回后停留在場景左側(cè)。
看看主場景“as”圖層上設(shè)置的動作:
第1幀上的動作:
stop();
_root.shu_mc._visible=0
第2幀上的動作:
x = 0;
y = 0;
第3幀上的動作:
x = x+1;
if (x<=5) {
duplicateMovieClip(shu_mc, "shu_mc" + x, x);
_root["shu_mc" + x]._x = _root.shu_mc._x+(-15*x);
_root["shu_mc" + x]._y = _root.shu_mc._y+(30*x);
}
第10幀上的動作:
if (x<=5) {
gotoAndPlay(3);
} else {
stop();
}
“play”按鈕上的動作:
on (release) {
gotoAndPlay(2);
}
“刪除mc”按鈕上的動作:
on (release) {
if (x>5) {
y = y+1;
removeMovieClip("shu_mc"+y);
}
}
第1幀、第2幀和第10幀上的語句是我們已經(jīng)學習過的,現(xiàn)在先來認識一下第3幀上i大括號“{}”里面的三行語句。
duplicateMovieClip(shu_mc, "shu_mc" + x, x);小括號“()”里定義了三個參數(shù):
shu_mc為要進行復制的目標影片剪輯對象。
"shu_mc"+x 為新復制的影片剪輯的唯一標識符,這個標識符是由字符串“shu_mc”連接上通過運算取得的x的值得來的,即新復制出的影片剪輯名稱依次為shu_mc1、shu_mc2、……shu_mc5,在這里加號“+”是連接符,shu_mc+x也可以寫成shu_mc add x。
后面一個參數(shù)x為新復制的影片剪輯的深度級別,在這里依次為1、2、3、4、5。在同一時間線上,每一個新復制的影片剪輯占用一個唯一的深度級別,并層層堆疊,如果后復制出的影片剪輯與前面復制出的影片剪輯深度級別相同就會覆蓋并替換掉前一個影片剪輯,所以必須為每一個新復制的影片剪輯分配一個唯一的深度級別。
_root["shu_mc" + x]._x = _root.shu_mc._x-15*x;
_root["shu_mc" + x]._y = _root.shu_mc._y+30*x;
這里又出現(xiàn)了一個新的運算符,方括號“[ ]”是數(shù)組運算符,里面的參數(shù)為相同類型的一組數(shù)據(jù),本節(jié)接觸的_root["shu_mc" + x]只是數(shù)組運算的一種形式,在這里方括號“[ ]”里運算的結(jié)果即為shu_mc1、shu_mc2、……shu_mc5。在這里使用數(shù)組可以動態(tài)的給_x、_y屬性賦值。
賦值符號“=”右邊的表達式以父本shu_mc影片剪輯的x、y位置為依據(jù),計算出每一個新復制的影片剪輯的相應(yīng)坐標位置,實際效果是x坐標左移15*x像素,y坐標下移30*x像素。
現(xiàn)在我們來分析一下這些語句的執(zhí)行流程及功能:
第1幀上的兩行語句是前面學過的,影片一開始播放,就停止在第一幀,并由第二行語句設(shè)置場景上的shu_mc影片剪輯的_visible屬性為0,即不可見。所以當影片開始播放時,看不見主場景上左側(cè)那只小松鼠。
第2幀定義了兩個變量x、y,并分別為其賦予初始值為0。
第3幀是這一節(jié)的關(guān)鍵,第1行語句設(shè)置變量x的值為x+1,當播放頭第一次到達第3幀時,這時x=0+1,即x的值為1。
接下來,在if語句塊里,設(shè)置了一個條件,當(x<=5)時,執(zhí)行大括號“{}”語句塊里的復制影片剪輯的語句。由于當前x的值為1,符合條件,這時復制出第一個名稱為“shu_mc1”、層深度為“1”的小松鼠影片剪輯,并以父本小松鼠的位置為依據(jù)左移15*1像素、下移30*1像素出現(xiàn)在場景中,由于每一個新復制出的影片剪輯都會從自身時間軸的第1幀開始完整的播放,所以這時我們看到第一只小松鼠跑了出來,在場景上奔跑了一個來回后停止在場景左側(cè)原地跳躍,即從shu_mc影片剪輯的第1幀運行到第120幀然后停止下來。
播放頭前進到第10幀,又有一個判斷條件,如果x<=5則跳轉(zhuǎn)到第3幀并播放,否則就停留在第10幀。當符合條件再一次跳轉(zhuǎn)到第3幀時,這時x的值為2了,于是又復制出名稱為“shu_mc2”、層深度為“2”的第二只小松鼠影片剪輯,并以父本小松鼠的位置為依據(jù)再左移15*2像素、下移30*2像素出現(xiàn)在場景中,我們看到第二只小松鼠跑了出來,在場景上奔跑一個來回后停止在場景左側(cè)原地跳躍。
按照設(shè)定的條件反復判斷,當超出了x<=5的條件時,播放頭便停留在第10幀上了。
這時,場景上復制出的5只小松鼠都完成了各自時間軸上120幀的運動后在場景左側(cè)按照各自的x、y位置排列原地跳躍。
as圖層上的語句執(zhí)行完了。
這時,當我們點擊“刪除mc”按鈕,y的值為1,removeMovieClip("shu_mc"+y)為removeMovieClip(shu_mc1),shu_mc1影片剪輯被刪除,繼續(xù)點擊,就會依次將shu_mc2、……shu_mc5一一刪除。
當我們再次點擊場景右下角的“play”按鈕,播放頭將跳轉(zhuǎn)到第2幀并播放,x和y重置為0,再次重復上一次的復制過程。
如果復制完成5只小松鼠后,我們不點“刪除mc”按鈕而再次直接點擊“play”按鈕,這時就會看到,每復制出一只小松鼠,相同層深上的那一只小松鼠立即消失掉,這就是我們上面所講的“新復制出的影片剪輯與前面復制出的影片剪輯深度級別相同就會覆蓋并替換前一個影片剪輯”。
關(guān)于復制出的影片剪輯的層深度問題,我們再用一個直觀一點的示例來加深理解,請看實例1-7。
實例1-7 層深度理解
場景上共兩幀,第1幀設(shè)定作為復制父本的 “yuan_mc”影片剪輯不可見,定義一個變量“x”,并設(shè)定其初始值為“0”;第2幀設(shè)置stop讓播放頭停留在該處,等待按鈕事件來控制下一步的動作。每點擊一次“復制mc”按鈕,就會按照設(shè)定的條件以及設(shè)定的屬性值復制出一個新的影片剪輯,并依次根據(jù)x的值命名為yuan_mc1、yuan_mc2、……、yuan_mc5,可以清楚的看見,復制出的影片剪輯各自占用一個唯一的特定深度層,深度層根據(jù)x的值依次為1、2、3、4、5,后復制出的影片剪輯總是疊放在先復制出的影片剪輯的上面一層,當按照設(shè)置的條件復制出5個mc后, 再繼續(xù)點擊“復制mc”按鈕又會依次復制出yuan_mc1、yuan_mc2、……、yuan_mv5,再次復制出的影片剪輯依然占用1、2、3、4、5深度層,這時相應(yīng)深度層上原有的影片剪輯就被替換掉了。
復制影片剪輯的語句也可以用點語法“.”的格式來寫:
例如:duplicateMovieClip(shu_mc, "shu_mc" + x, x);
可以寫成:shu_mc.duplicateMovieClip("shu_mc" + x, x);
課后練習:素材源文件下載
用提供的課后練習素材源文件,在相應(yīng)的關(guān)鍵幀和按鈕上添加語句,實現(xiàn)如下效果:
1. 點擊“復制mc”按鈕由下至上逐一復制出5個橢圓,位置如練習6所示;
2. 點擊紅色“刪除mc”按鈕,由下至上逐一刪除復制出的橢圓;
3. 點擊黃色“刪除mc”按鈕,由上至下逐一刪除復制出的橢圓。
提示:設(shè)置的坐標和調(diào)整縮放比例,可根據(jù)效果測試一個合適的值,不要求和示例效果一模一樣。
課后練習1-7效果
這篇教程為“Flash AS 入門教程”的一部分。查看全套教程>>>>。
相關(guān)文章
- flash cs6想要實現(xiàn)鼠標跟隨效果?該怎么制作呢?今天我們就來看看使用as2.0實現(xiàn)鼠標跟隨效果的教程,需要的朋友可以參考下2019-05-19
- Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來輸入文本,該怎么使用代碼輸入文本呢?請看下文詳細的教程,需要的朋友2018-03-11
- flash as3.0抽象類怎么定義? as3.0中有很多抽象類,該怎么定義抽象類和抽象方法呢?下面我們就來看看簡單的例子,需要的朋友可以參考下http://www.dbjr.com.cn/softs/408402.2018-02-28
flash cs6中怎么使用ActionScript3.0?
flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2018-01-25- 本教程給大家分享一個Flash小教程,教大家在Flash CS6中怎么實現(xiàn)鼠標點擊決定圖像位置?方法很簡單,感興趣的朋友歡迎前來一起分享學習2018-01-12
- 本教程教腳本之家的ActionScript教程學習者在Flash中如何用代碼將圖片放在自己想要的舞臺位置,教程講解的詳細,感興趣的朋友歡迎前來分享學習2017-11-20
在Flash CS6中使用with函數(shù)繪制背景圖教程
本教程教腳本之家的ActionScript教程學習者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細,方法也不難,非常適合Flash新手入門學習2017-11-18Flash怎么設(shè)置元件坐標?flash使用代碼設(shè)置元件的坐標的教程
Flash怎么設(shè)置元件坐標?flash中導如的元件需要添加坐標,該怎么定位元件坐標呢?下面我們就來看看flash使用代碼設(shè)置元件的坐標的教程,需要的朋友可以參考下2017-10-11- Flash怎么制作來回搖擺的花朵的動畫?Flash中想要給花朵制作一段搖擺的動畫效果,該怎么制作呢?下面我們就來看看詳細的教程,很簡單,需要的朋友可以參考下2017-05-23
- Flash怎么制作流動七彩色的文字?想要讓文字動起來,該怎么使用flash給文字制作一個流動七彩色的動畫呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2017-04-23