AS 實戰篇

AS 實戰篇
-----------------------------------
如果你剛開始學習AS,並且沒有看過我前面3篇教程的話,這裏是連接:

土人系列AS入門教程

這次我們要進入實戰,我要教你們做一個很簡單的遊戲,下面的每句代碼我都會加上註釋,如果你看過上面的教程,我想要全部理解應該不會困難。

現在讓我們開始吧。這個遊戲是我初學的時候按教程做的一個遊戲,所以印象比較深刻。這個遊戲叫做蝸牛賽跑,流程是這樣的:畫面上有若干條賽道,每條賽道上面有一隻蝸牛,每隻蝸牛爬行的速度不一樣。遊戲開始了,你要猜猜哪隻蝸牛先跑到終點。如果你猜對了,You Win,否則,Game Over。

第1步,我們先設置場景的大小 600*400 px ,運行速度爲 48幀/秒 這個是我個人喜好速度。
click for full size


第2步,我們把默認的層名稱改成Bkground,並且畫上賽道、起跑線和終點線,我這裏是4條賽道。
click for full size


第3步,新建一個層,層命名成WN_Layer,然後畫一個會動的蝸牛放在這個層,F8定義成MC,MC命名成WN_MC。把蝸牛的尾巴放在整個MC的正中間,如果少了這步,蝸牛還沒到終點就結束了。然後複製3個一樣的蝸牛,在屬性欄裏面調整一下顏色,使他們看起來有點區別。然後對齊放到各條賽道的起點位置。

第4步,新建一個層,命名成btn , 然後做一個按鈕,複製4個分別放在4個蝸牛的旁邊。
click for full size

第5步,記住蝸牛開始的X軸位置數據,我這裏是25,然後把一個蝸牛拖到終點看看它的X軸位置數據多少,然後記下來,爲AS做準備。我這裏得到的是540。記得把它放回去哦~
click for full size

第6步,新建一個層,命名爲Actoins,用來寫AS的。這個層我們需要4個關鍵幀。我來講一下爲什麼。
我們需要一個幀來準備開始遊戲,也就是讓玩家猜的幀,是遊戲一開始的蝸牛不動的畫面。這個就由第1幀來完成了。我們做的4個按鈕也就是要讓玩家去猜哪隻蝸牛會贏。
當遊戲開始以後,玩家不能改變數據了,所以在烏龜爬的過程中,按鈕層沒有內容。
第2個幀我們要讓每個蝸牛都爬一次,爲什麼只讓他們爬一次呢?因爲時間軸的指針經過這個關鍵幀的時候,只讓幀裏面的AS執行一次而已。爲了讓蝸牛不斷地爬,我們需要重複的讓時間指針走過這個第2幀,所以我們第3幀的內容就是要讓時間指針回到第2幀。
第3幀以後就是顯示結果的幀了,那我們新建一個層,命名show ,做第4跟第5兩個關鍵幀,在第4幀放一個勝利的字樣,在第5幀放一個失敗的字樣。
另外在遊戲結束後,我們需要一個按鈕讓玩家再玩一次,所以,按鈕層的第 4到5 兩個幀需要一個按鈕。

佈置完以後,整個層的結構如圖(還沒有任何 AS):
click for full size
現在我們有 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;
}


全部看明白了吧?嗯,看看我做的


這裏我就不給源文件了,大家自己動手做做,很有成就感的~ :)
(完)
發佈了98 篇原創文章 · 獲贊 2 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章