-----------------------------------
如果你剛開始學習AS,並且沒有看過我前面3篇教程的話,這裏是連接:
土人系列AS入門教程
這次我們要進入實戰,我要教你們做一個很簡單的遊戲,下面的每句代碼我都會加上註釋,如果你看過上面的教程,我想要全部理解應該不會困難。
現在讓我們開始吧。這個遊戲是我初學的時候按教程做的一個遊戲,所以印象比較深刻。這個遊戲叫做蝸牛賽跑,流程是這樣的:畫面上有若干條賽道,每條賽道上面有一隻蝸牛,每隻蝸牛爬行的速度不一樣。遊戲開始了,你要猜猜哪隻蝸牛先跑到終點。如果你猜對了,You Win,否則,Game Over。
第1步,我們先設置場景的大小 600*400 px ,運行速度爲 48幀/秒 這個是我個人喜好速度。
第2步,我們把默認的層名稱改成Bkground,並且畫上賽道、起跑線和終點線,我這裏是4條賽道。
第3步,新建一個層,層命名成WN_Layer,然後畫一個會動的蝸牛放在這個層,F8定義成MC,MC命名成WN_MC。把蝸牛的尾巴放在整個MC的正中間,如果少了這步,蝸牛還沒到終點就結束了。然後複製3個一樣的蝸牛,在屬性欄裏面調整一下顏色,使他們看起來有點區別。然後對齊放到各條賽道的起點位置。
第4步,新建一個層,命名成btn , 然後做一個按鈕,複製4個分別放在4個蝸牛的旁邊。
第5步,記住蝸牛開始的X軸位置數據,我這裏是25,然後把一個蝸牛拖到終點看看它的X軸位置數據多少,然後記下來,爲AS做準備。我這裏得到的是540。記得把它放回去哦~
第6步,新建一個層,命名爲Actoins,用來寫AS的。這個層我們需要4個關鍵幀。我來講一下爲什麼。
我們需要一個幀來準備開始遊戲,也就是讓玩家猜的幀,是遊戲一開始的蝸牛不動的畫面。這個就由第1幀來完成了。我們做的4個按鈕也就是要讓玩家去猜哪隻蝸牛會贏。
當遊戲開始以後,玩家不能改變數據了,所以在烏龜爬的過程中,按鈕層沒有內容。
第2個幀我們要讓每個蝸牛都爬一次,爲什麼只讓他們爬一次呢?因爲時間軸的指針經過這個關鍵幀的時候,只讓幀裏面的AS執行一次而已。爲了讓蝸牛不斷地爬,我們需要重複的讓時間指針走過這個第2幀,所以我們第3幀的內容就是要讓時間指針回到第2幀。
第3幀以後就是顯示結果的幀了,那我們新建一個層,命名show ,做第4跟第5兩個關鍵幀,在第4幀放一個勝利的字樣,在第5幀放一個失敗的字樣。
另外在遊戲結束後,我們需要一個按鈕讓玩家再玩一次,所以,按鈕層的第 4到5 兩個幀需要一個按鈕。
佈置完以後,整個層的結構如圖(還沒有任何 AS):
現在我們有 4 個對象 : _root.wn1 , _root.wn2 , _root.wn3 , _root.wn4
下面我們一幀一幀來做:
Action 第1幀
_root.stop(); //停止時間軸 _root.truewinner = 0; _root.guesswinner = 0;
後面2句代碼定義了兩個變量truewinner,guesswinner在_root這條時間軸。變量是用來儲存數據的,可以自己定義。這裏的truewinner,guesswinner分別表示 哪號蝸牛贏了 和 玩家猜的是哪號 。這裏初始化了這兩個數據。
Action 第2幀
_root.wn1._x += random(10)/10+random(1); //蝸牛1號的X軸數據增加某一數值 _root.wn2._x += random(10)/10+random(1); //蝸牛2號的X軸數據增加某一數值 _root.wn3._x += random(10)/10+random(1); //蝸牛3號的X軸數據增加某一數值 _root.wn4._x += random(10)/10+random(1); //蝸牛4號的X軸數據增加某一數值
看過對象篇,這裏理解起來不難吧?
_x 表示對象蝸牛的屬性之一:X軸的位置。
+= 表示自加 , 這樣理解 a=a+1 和 a+=1 是一樣的。表示自加1。
這裏有個方法 , random()
這個方法用來獲得一個隨機的數字,如 random(10) 獲得 0-9 中間的任何一個數字。上面的表達式獲得一個從 0-1.9 的一個隨機數。
Action 第3幀
if (_root.wn1._x>540) { _root.truewinner = 1; } if (_root.wn2._x>540) { _root.truewinner = 2; } if (_root.wn3._x>540) { _root.truewinner = 3; } if (_root.wn4._x>540) { _root.truewinner = 4; } //判斷哪隻蝸牛到了,到了就改變truewinner的值,紀錄哪隻蝸牛獲勝 if (_root.truewinner != 0) { if (_root.guesswinner == _root.truewinner) { _root.gotoAndStop(4); } else { _root.gotoAndStop(5); } } else { _root.gotoAndPlay(2); } /*-------------------------------------------- 判斷truewinner的值,如果被改變了,說明已經有蝸牛到了 如果還沒有改變,說明蝸牛們還沒到。 如果沒到,就把_root的指針跳到第2幀,讓他們繼續跑,如果到了, 判斷玩家壓的那隻和真正到的那只是不是一樣。如果猜對了,讓時間 指針跳停到第4幀,否則跳停到第5幀。 ---------------------------------------------*/
仔細理解一下流程,應該不難 :)
接下來是按鈕上的AS:
第1幀的按鈕
on(release){ _root.play(); _root.guesswinner = 1; }
第一隻蝸牛旁邊的按鈕上面的as。鬆開按鈕後,指針跳到第2幀,然後紀錄變量guesswinner爲1(猜第1只)。
其它蝸牛旁邊的代碼類似,就是紀錄變量guesswinner值爲相對應的 2、3、4
最後一個按鈕,用來重玩的。
on(release){ _root.gotoAndStop(1); _root.wn1._x = 25;//蝸牛1號回起點 _root.wn2._x = 25; _root.wn3._x = 25; _root.wn4._x = 25; }
全部看明白了吧?嗯,看看我做的
這裏我就不給源文件了,大家自己動手做做,很有成就感的~ :)
(完)