這篇教程為“Flash AS 入門教程”的一部分。查看全套教程>>>>。
源文件下載
本節應掌握的知識要點:
①for循環應用;②nextFrame()、prevFrame()動作應用;③層深度的進一步理解。
與條件判斷語句一樣,循環語句也是最具有實用性的語句,在滿足條件時程序會不斷重復執行,直到設置的條件不成立才結束循環,繼續執行下面的語句。
這1講我們將學習一個最常用的for循環語句和兩個動作語句nextFrame()、prevFrame()。
for循環語句格式如下:
for(變量初始值;循環條件;進入下一循環){
條件成立時執行的動作}
nextFrame()進入下一幀并停止在該幀
prevFrame()返回前一幀并停止在該幀
請看示例動畫“實例1-8”。
>>>>>點擊查看動畫效果<<<<<
實例1-8 for()循環語句應用
畫面上是一個簡單的線條變幻特效,點擊“刪除”按鈕線條會全部消失,點擊“向右”按鈕,會顯示另一個特效,如果不點擊刪除按鈕直接點擊“向右”按鈕,會顯示另一個特效。這個效果就是運用for循環語句對一個含有簡單動作補間、實例名為“line”的影片剪輯進行循環復制實現的。
打開源文件看看,場景上有【按鈕】、【mc】、【as】3個圖層。【按鈕】圖層第1幀上有一個“刪除”按鈕和一個“向右”按鈕,第2幀上有一個“返回”按鈕;【mc】圖層上是一個實例名為“line_mc”的影片剪輯。
在【as】圖層第1幀上的語句:
stop();
line_mc._x=120;
line_mc._y=220;
line_mc._visible= 0; //設置作為父本的影片剪輯“line_mc”不可見。
for (i=1; i<100; i++) { //設定變量i的初始值為1,設定循環條件為i<100,進入下一循環時變量i自加1。
line_mc.duplicateMovieClip("line_mc"+i, i); //復制新影片剪輯。
_root["line_mc"+i]._x = line_mc._x+3*i; //設置新復制的影片剪輯的橫坐標。
_root["line_mc"+i]._rotation = 3.6*i; //設置新復制的影片剪輯的旋轉參數。
}
“刪除”按鈕上的語句:
on (release) {
for (i=1; i<100; i++) {
removeMovieClip("line_mc"+i);
}
}
“向右”按鈕上的語句:
on (release) {
nextFrame(); // 進入并停止在下1幀
}
在【as】圖層第2幀上的語句:
for (i=2; i<100; i=i+2) {
line_mc.duplicateMovieClip("line_mc"+i, i);
_root["line_mc"+i]._x = line_mc._x+3*i;
}
“返回”按鈕上的語句:
on (release) {
prevFrame(); //返回前1幀
}
我們來分析一下語句的執行過程,影片開始播放時停留在第1幀上,將被復制的父本影片剪輯在場景上的坐標定義到(120,200)位置,并使其不可見,接下來根據for語句小括號“()”里設置的參數,開始執行循環體內的語句。第一個參數定義了變量i被賦予初始值為“1”,第2個參數定義了循環的條件為i<100,當滿足這個條件時,將循環執行大括號“{}”內的語句塊,第3個參數i++,定義了在每一次循環結束時i的值加1,直到超過i<100的條件為止才停止循環。
循環體大括號“{}”內的動作是復制實例名為“line_mc”的影片剪輯,并為新復制的影片剪輯命名為“line_mci”,層深度為“i”,設置其橫坐標位置為場景上的父本“line_mc”影片剪輯的橫坐標加上“3*i”像素,并旋轉3.6*i度。
當循環開始時,i的值為1,符合i<100的條件,于是復制出第一個新影片剪輯,名稱為“line_mc1”,在父本“line_mc”的位置上右移3個像素,并旋轉3.6度。至此第一次循環結束,i的值加1。繼而進行下一輪循環。
如此不斷的循環,直至i的值為100時,便超出了設置的條件,于是循環結束,停止復制“line_mc”影片剪輯。
此時,場景上新復制出的影片剪輯以橫向相差3像素、旋轉相差3.6度等距排列并同時播放,從而形成了有規律奇妙變幻的特效。
再來分析“刪除”按鈕上的語句,與第1幀上的循環條件一樣,差別只是循環體內執行的動作不同,當滿足條件時循環刪除上一步新復制出的所有影片剪輯。
點擊“向右”按鈕時,播放頭進入第2幀,再按照新的循環條件循環復制線條,并為新復制的線條賦予新的屬性值。
可以看到,第2幀的語句里,循環條件里面i的初始值為2,每循環一次i遞增2,設置的層深度為i,即每個復制出的新影片剪輯所占用的都為偶數深度層。
新影片剪輯的屬性設置與第1幀上所不同的僅僅是減去了旋轉屬性的設置,我們看到的又是第2種特效。
如果在第1幀不點擊“刪除”按鈕而直接點擊“向右”按鈕,我們會看到第3種特效。這是由于上一次復制的影片剪輯沒有刪除,在第2幀上所有偶數深度層上的線條被新復制出的線條替換掉了,而奇數深度層上原來的線條則保留了下來,由此就組合出了另一種效果。 點擊第2幀上的“返回”按鈕,播放頭回到第1幀,再一次按照第1幀的動作腳本循環復制“line_mc”,于是第一個特效又出現在場景上。
在設置循環語句的條件時,必須注意條件的邏輯性和合理性,特別要避免程序陷入死循環。
比如,如果將以上for循環的參數設置為for(i=1; i>0; i++),這個條件就會永久成立,導致程序陷入死循環。
課后練習:
利用實例8源文件,按以下要求完成練習:
1. 在第1幀用for語句復制出60根線條,通過設置旋轉屬性形成一個變幻的圓環狀特效,并居中顯示。
2. 點擊“向右”按鈕即在第2幀復制出100根線條,通過設置其y坐標屬性、橫向縮放屬性和旋轉屬性形成第2個特效。居中顯示。
3. 點擊第2個特效畫面的“向左”按鈕返回第1個特效,點擊“向右”按鈕顯示第3個組合特效。
>>>>>點擊查看動畫效果<<<<<
課后練習1-8效果
這篇教程為“Flash AS 入門教程”的一部分。查看全套教程>>>>。
新聞熱點
疑難解答