您的位置:首頁(yè) > 軟件教程 > 教程 > Flash AS3.0教你射擊類(lèi)游戲的制作

Flash AS3.0教你射擊類(lèi)游戲的制作

來(lái)源:互聯(lián)網(wǎng) | 時(shí)間:2015-07-13 10:54:28 | 閱讀:140 |  標(biāo)簽: Flash   | 分享到:

Flash AS3.0教你射擊類(lèi)游戲的制作


3、把AirRaid.fla文件復(fù)制到項(xiàng)目文件夾下(省去

制作

界面)。點(diǎn)擊下面的"創(chuàng)建類(lèi)"

圖標(biāo)

,在彈出的創(chuàng)建類(lèi)面板類(lèi):的文本框中填入文件名:AirRaid 單擊創(chuàng)建類(lèi)按鈕。這樣類(lèi)就創(chuàng)建好了并為我們寫(xiě)好了類(lèi)的框架,我們可以在框架中添加我們的代碼了。圖:創(chuàng)建類(lèi)

Flash AS3.0教你射擊類(lèi)游戲的制作


圖:填入類(lèi)名


Flash AS3.0教你射擊類(lèi)游戲的制作


圖:類(lèi)的框架


Flash AS3.0教你射擊類(lèi)游戲的制作4、編寫(xiě)AirRaid.as類(lèi)

AirRaid.as類(lèi):文檔類(lèi)AirRaid類(lèi)是游戲的控制器,綁定AirRaid.fla 。負(fù)責(zé)生成界面上的飛機(jī)、火炮、子彈。顯示得分,子彈的剩余數(shù)量。注冊(cè)了鍵盤(pán)按下,釋放偵聽(tīng)器,接收用戶(hù)的鍵盤(pán)操作。注冊(cè)了進(jìn)入幀事件偵聽(tīng)器,進(jìn)行碰撞檢 測(cè)。定義一個(gè)飛機(jī)計(jì)時(shí)器,隨機(jī)生成飛機(jī)。檢測(cè)剩余子彈的數(shù)目,當(dāng)子彈數(shù)為零時(shí)也就是主角死亡了,移除界面上的飛機(jī),火炮,跳轉(zhuǎn)到重玩按鈕。 
 


package {
import flash.display.MovieClip;;
import flash.display.SimpleButton;
import flash.events.KeyboardEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.events.Event;

public class AirRaid extends MovieClip {
private var aagun:AAGun;//火炮
private var airplanes:Array;//飛機(jī)數(shù)組
private var bullets:Array;//子彈數(shù)組
public var leftArrow, rightArrow:Boolean;
private var nextPlane:Timer;//不定時(shí)生成飛機(jī)的計(jì)時(shí)器
private var shotsLeft:int;//得分文本
private var shotsHit:int;//子彈數(shù)文本

public function startAirRaid() {
// 初始化得分?jǐn)?shù)和子彈數(shù)
shotsLeft = 20;
shotsHit = 0;
showGameScore();

// 生成炮加入到舞臺(tái)上
aagun = new AAGun();
addChild(aagun);

// 生成飛機(jī)、子彈數(shù)組
airplanes = new Array();
bullets = new Array();

// 鍵盤(pán)按下、釋放事件偵聽(tīng)器
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);

// 進(jìn)入幀事件偵聽(tīng)器,檢測(cè)子彈擊中飛機(jī)的碰撞檢測(cè)。
addEventListener(Event.ENTER_FRAME,checkForHits);

// 生成下一架飛機(jī)
setNextPlane();
}
//不定時(shí)生成飛機(jī)
public function setNextPlane() {
//1000毫秒至2000毫秒之間生成一架飛機(jī)
nextPlane = new Timer(1000 + Math.random() * 1000,1);
//
nextPlane.addEventListener(TimerEvent.TIMER_COMPLETE,newPlane);
nextPlane.start();
}

public function newPlane(event:TimerEvent) {
// 隨機(jī)的邊、速度和高度
if (Math.random() > .5) {
var side:String = "left";
} else {
side = "right";
}
var altitude:Number = Math.random()*50+20;
var speed:Number = Math.random()*150+150;

// 生成飛機(jī)
var p:Airplane = new Airplane(side,speed,altitude);
addChild(p);
airplanes.push(p);

// set time for next plane
setNextPlane();
}

// 碰撞檢測(cè)
public function checkForHits(event:Event) {
for(var bulletNum:int=bullets.length-1;bulletNum>=0;bulletNum--){ 
for (var airplaneNum:int=airplanes.length-1;airplaneNum>=0;airplaneNum--) {
if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum])) {
airplanes[airplaneNum].planeHit();
bullets[bulletNum].deleteBullet();
shotsHit++;
showGameScore();
break;
}
}
}

if ((shotsLeft == 0) && (bullets.length == 0)) {
endGame();
}
}

// 按下鍵盤(pán)
public function keyDownFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = true;
} else if (event.keyCode == 39) {
rightArrow = true;
} else if (event.keyCode == 32) {
fireBullet();
}
}

// 釋放鍵盤(pán)
public function keyUpFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = false;
} else if (event.keyCode == 39) {
rightArrow = false;
}
}

// 生成新的子彈
public function fireBullet() {
if (shotsLeft <= 0) return;
var b:Bullet = new Bullet(aagun.x,aagun.y,-300);
addChild(b);
bullets.push(b);
shotsLeft--;
showGameScore();
}

public function showGameScore() {
showScore.text = String("得分: "+shotsHit);
showShots.text = String("剩余子彈: "+shotsLeft);
}

// 從數(shù)組獲取飛機(jī)
public function removePlane(plane:Airplane) {
for(var i in airplanes) {
if (airplanes[i] == plane) {
airplanes.splice(i,1);
break;
}
}
}

// 獲取數(shù)組的一個(gè)子彈
public function removeBullet(bullet:Bullet) {
for(var i in bullets) {
if (bullets[i] == bullet) {
bullets.splice(i,1);
break;
}
}
}

// 游戲結(jié)束,移除界面上的東西。
public function endGame() {
// 移除飛機(jī)
for(var i:int=airplanes.length-1;i>=0;i--) {
airplanes[i].deletePlane();
}
airplanes = null;

aagun.deleteGun();
aagun = null;
// 移除偵聽(tīng)器
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
removeEventListener(Event.ENTER_FRAME,checkForHits);

nextPlane.stop();
nextPlane = null;

gotoAndStop("gameover");
}

}
}

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)