您的位置:首页 > 软件教程 > 教程 > Flash AS3.0教你射击类游戏的制作

Flash AS3.0教你射击类游戏的制作

来源:互联网 | 时间:2015-07-13 10:54:28 | 阅读:157 |  标签: Flash   | 分享到:

5、编写AAGun.as类


创建类的方法同第3步。首先选中库中的AAGun元件,打开项目面板创建类。在"将类邦定到库元件"前面打勾,点下"使用所选库元件"的单选按钮。图:邦定库元件


Flash AS3.0教你射击类游戏的制作

AAGun类:邦定库中的炮元件,向左移动向右移动,检测边界,自动消毁。



package {
import flash.display.*;
import flash.events.*;
import flash.utils.getTimer;

public class AAGun extends MovieClip {
static const speed:Number = 150.0;
private var lastTime:int; // 控制移动的Timer

public function AAGun() {
// 枪的初始位置
this.x = 275;
this.y = 340;

//运动
addEventListener(Event.ENTER_FRAME,moveGun);
}

public function moveGun(event:Event) {
// 得到时差
var timePassed:int = getTimer() - lastTime;
lastTime += timePassed;

// 现在的位置
var newx = this.x;

// 移动到左边
if (MovieClip(parent).leftArrow) {
newx -= speed*timePassed / 1000;
}

// 移动到右边
if (MovieClip(parent).rightArrow) {
newx += speed*timePassed / 1000;
}

// 检测边界
if (newx < 10) newx = 10;
if (newx > 540) newx = 540;

// 更新位置
this.x = newx;
}

// 移除屏幕上的炮和事件
public function deleteGun() {
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME,moveGun);
}
}
}

新建文件Airplane.as


Airplane类:邦定库中的飞机元件。随机产生飞机,随机的速度,产生5种飞机样式,检测是否飞出边界,检测被子弹击中。自动毁灭和爆炸效果。



package {
import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.utils.getTimer;
import flash.events.Event;

public class Airplane extends MovieClip {
private var dx:Number; // 飞机的速度、方向
private var lastTime:int; // 控制移动的Timer
//左右移动
public function Airplane(side:String, speed:Number, altitude:Number) {
if (side == "left") {
this.x = -50; // start to the left
dx = speed; // fly left to right
this.scaleX = -1; // reverse
} else if (side == "right") {
this.x = 600; // start to the right
dx = -speed; // fly right to left
this.scaleX = 1; // not reverse
}
this.y = altitude; // vertical position

this.gotoAndStop(Math.floor(Math.random()*5+1));
// set up animation
addEventListener(Event.ENTER_FRAME,movePlane);
lastTime = getTimer();
}
//检测边界
public function movePlane(event:Event) {
// get time passed
var timePassed:int = getTimer()-lastTime;
lastTime += timePassed;

// move plane
this.x += dx*timePassed/1000;

// check to see if off screen
if ((dx < 0) && (x < -50)) {
deletePlane();
} else if ((dx > 0) && (x > 600)) {
deletePlane();
}

}

// 检测碰撞,子弹击中飞机跳转到帧标签"explode"演示爆炸动画。
public function planeHit() {
removeEventListener(Event.ENTER_FRAME,movePlane);
MovieClip(parent).removePlane(this);
gotoAndPlay("explode");
}

// 移除舞台上的飞机和事件
public function deletePlane() {
removeEventListener(Event.ENTER_FRAME,movePlane);
MovieClip(parent).removePlane(this);
parent.removeChild(this);
}

}
}

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

相关视频攻略

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件admin@haote.com

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2024 haote.com 好特网