打靶遊戲


 

 

範例如下:


打不中,我們的豬頭教練會不高興喔!

記得開喇叭喔!!!^_^

 

 


製作步驟如下

步驟 1

先建立一個batman的資料夾,先將這個.fla的檔案存在batman資料夾中

產生一個Graphic,命名為"bc",在它的編輯介面設計以下圖形,如圖 1所示


圖 1

產生一個Graphic,命名為"sc",在它的編輯介面設計以下圖形,如圖 2所示


圖 2

步驟 2

產生一個Graphic,命名為"c",在它的編輯介面設計以下圖形,如圖 3所示


圖 3

 

步驟 3

產生一個Graphic,命名為"stars",在它的編輯介面設計以下圖形,如圖 4所示


圖 4

步驟 4

產生一個MovieClip,命名為"CrossHair",在它的編輯介面設3個圖層
在"cross"圖層,打開Library,把"bc"、"sc"、"c"拖曳到畫面,時間延長為兩格的Frame長度
在"stop"圖層的Frame1設stop();的程式碼,時間延長為兩格的Frame長度,如圖 5所示


圖 5

在"gotit"圖層的Frame2,打開Library把"stars"拖曳到畫面上來,如圖 6所示


圖 6

步驟 5

產生一個MovieClip,命名為"bullet",在它的編輯介面設計以下圖形,如圖 7所示


圖 7

 

步驟 6

產生一個MovieClip,命名為"Target",在它的編輯介面設計以下三個圖層
在"Base"圖層的Frame1,在畫面上畫一個黑色矩形,時間設為Frame1至Frame40
在"Frame Action"圖層的Frame1設 stop();的程式碼,如圖 8所示


圖 8

 

在"man"圖層的Frame2,設計爆炸的開始狀況,如圖 9所示


圖 9

在"man"圖層的Frame3,設計爆炸的後續狀況,如圖 10所示


圖 10

在"man"圖層的Frame4,設計爆炸的最後狀況
在"Frame Action"的Frame4,設以下的程式碼,如圖 11所示


圖 11

在"man"圖層的Frame5,設計靶子的原來狀況 ,時間為Frame5至Frame40,如圖 12


圖 12

在"Frame Action"圖層的Frame40,設以下程式碼,如圖 13所示


圖 13

 

 

 

步驟 7

產生一個Graphic,命名為"fc",在它的編輯介面設計以下圖形,如圖 14所示


圖 14

再產生一個Graphic,命名為"expression",在它的編輯介面設計以下圖形,如圖 15所示


圖 15

 

步驟 8

 

產生一個MovieClip,命名為"face",在它的編輯介面設計以下三個圖層
在"fc" 圖層,打開Library把"fc"拖曳到畫面上來,時間設為10格Frame
在"nose"圖層,畫一個豬鼻子及外框線,時間設為10格Frame
在"expression" 圖層,打開Library把"expression"拖曳到畫面上來,時間設為10格Frame,如圖 16所示


圖 16

點選畫面上的"fc",做一段動畫,在Frame6變成橙色,在Frame10變成紅色
點選畫面上的"expression",做一段動畫,在Frame10變成憤怒的表情,如圖 17所示


圖 17

步驟 9

產生一個空的MovieClip,命名為"Game Action"

 

步驟 10

再打開記事本,寫下以下程式碼,將該檔案存檔,命名為 "shoot",副檔名請用 .as,存在batman的資料夾中

// 檔名: shoot.as
// 作者: Chi-Ren Hwang
// 版權: 軟體大學

onClipEvent(load){

an = 6;
hn = 0;
_root.hits = "命中: " + hn;
Mouse.hide();
pause = 2000;
targetPerLevel = 4;
targetLeft = 0;
levelWait = getTimer() + pause;
miss = 0;
shoot = new Sound();
shoot.attachSound("shoot");
popup = new Sound();
popup.attachSound("popup");
reload = new Sound();
reload.attachSound("reload");
_root.pig.gotoAndStop(1);

}

 

onClipEvent(enterFrame){

var i;
var temp;
_root.crosshair._x = _root._xmouse;
_root.crosshair._y = _root._ymouse;
if(targetLeft == 0 && getTimer() > levelWait){

for(i = 0; i < targetPerLevel; i++){

while(true){

temp = int(Math.random() * 16);
if(_root["target" + temp]._currentFrame == 1){

_root["target" + temp].gotoAndPlay(5);
targetLeft++;
break;

}

}

}
popup.start();
levelWait = getTimer() + 3000 + int(Math.random() * 4) * 1000;
targetPerLevel = int(Math.random() * 5) + 2;

}
_root.pig.gotoAndStop(int(miss/2));
if(miss > 20){

_root.gotoAndStop(3);
Mouse.show()

}
for(i=0; i < 6; i++){

if(i < an) _root["b" + i]._visible = true;
else _root["b" + i]._visible = false;

}

}

 

onClipEvent(mouseDown){

var i;
var x = _root._xmouse;
var y = _root._ymouse;
if(_root.reload.hitTest(x, y, false)){

reload.start();
an = 6;

}else{

if(an == 0) return;
shoot.start();
_root.crosshair.gotoAndStop(2);
an--;

}

for(i = 0; i < 16; i++){

if(_root["target" + i]._currentFrame > 4){

if(_root["target" + i].hitTest(x, y, true)){

_root["target" + i].gotoAndPlay(2);
hn++;
targetLeft--;

}

}

}
_root.hits = "命中: " + hn;

}

 


onClipEvent(mouseUp){

_root.crosshair.gotoAndStop(1);

}


步驟 11

產生一個MovieClip,命名為"reload",在它的編輯介面設計以下內容,如圖 18 所示

 


圖 18

步驟 12

回到Flash的主場景Scene1,產生以下的圖層,在"Frame Action"圖層的Frame1設 stop();的程式碼,並且在畫面鍵入遊戲名稱,遊戲方式及設計一個"開始"的按鈕,如圖 19所示


圖 19

點選畫面的"開始"按鈕,設以下的程式碼,如圖 20所示


圖 20

 

步驟 13

 

在"Frame Action"圖層的Frame2設 stop();的程式碼
在"Face"圖層,在Frame2插入空白的Blank KeyFrame,打開Library,把"face"拖曳到畫面上,並且給予Instance名稱為"pig"
在"Game Clip"圖層,在Frame2插入空白的Blank KeyFrame,打開Library,把"Game Action"拖曳到畫面上,並且給予Instance名稱為"gameAction"
在"CrossHair"圖層,在Frame2插入空白的Blank KeyFrame,打開Library,把"CrossHair"拖曳到畫面上,並且給予Instance名稱為"crosshair"
在"Dynamic Text"圖層,在Frame2插入空白的Blank KeyFrame,在畫面右上方上產生一個動態文字,並且在Text Options視窗的Variable欄位給予名稱為"hits",時間為Frame2至Frame3
在"bullets"圖層,在Frame2插入空白的Blank KeyFrame,打開Library,把"bullet"拖曳到畫面上,一共拖曳5個分身進來,分別給予Instance名稱命名為"b0"'、"b1"'、"b2"'、"b3"'、"b4"'、"b5"'
在"reload"圖層,在Frame2插入空白的Blank KeyFrame,打開Library,把"reload"拖曳到畫面上,並且給予Instance名稱為"reload"
在"Targets"圖層,在Frame2插入空白的Blank KeyFrame,打開Library,把"Target"拖曳到畫面上,一共拖曳15個分身進來,分別給予Instance名稱命名為"target0"'、"target1"'、"target2"'、....."target13"'、"target14"'、"target15"'
在"Background"圖層,在Frame2插入空白的Blank KeyFrame,畫幾條線造成空間的視覺效果,如圖 21所示


圖 21

請點選舞台上的"gameaction",設以下之程式碼,如圖 22所示


圖 22

步驟 14

在"Frame Action"圖層的Frame3,設以下程式碼,並且在畫面上設計遊戲結束的訊息文字,及設一個再玩一次的按鈕,如圖 23所示


圖 23

點選再玩一次的按鈕,設以下程式碼,如圖 24所示


圖 24

大功告成,請測試

 



 

下載原始檔

 

回課程目錄