如何制作一个简单的射击游戏(比CS简单)
第二部分开始写类:
1.首先,打开Flash CS4 (CS3,CS4或CS5之间没有太大的区别)创建一个新项目,然后按OK。打开项目面板。图:新项目
2、点击右边第一个三角形按钮(项目),在下拉菜单中选择"新建项目"。在弹出的新建项目面板中项目名称:填写项目名称。在根文件夹:item中单击右侧的browse按钮,浏览到存储项目的目录,然后按OK。在ActionScript版本中:选择ActionScript 3.0。点击“创建项目”按钮,项目将被完成。图:项目面板
3.将AirRaid.fla文件复制到项目文件夹(保存生产界面)。点击下面的“创建类”图标,在弹出的创建类面板Class:文本框中填写文件名:AirRaid。单击创建类别按钮。这样类就创建好了,类的框架也为我们写好了,我们可以把我们的代码添加到框架中。图:创建一个类
图:填写班级名称
图:类的框架
4.编写AirRaid.as类
AirRaid.as类:文档类AirRaid类是游戏的控制器,绑定了AirRaid.fla负责在界面上生成飞机、大炮、子弹。显示分数和剩余的项目符号数。注册键盘按压,释放侦听器,并接收用户的键盘操作。为冲突检测注册传入帧的事件侦听器。定义一个飞机定时器,随机生成飞机。检查剩余子弹的数量。当子弹数为零时,主角就死了。从界面中移除飞机和大炮,然后跳到重播按钮。
包{
公共类空袭扩展MovieClip {
私人var aa gun:aa gun;//炮兵
私人var飞机:阵列://飞机阵列
私有var项目符号:数组;//项目符号数组
公共变量leftArrow,right arrow:Boolean;
私有var next plane:Timer;//随时生成飞机定时器。
private var shots left:int;//乐谱文本
private var shot shit:int;//项目符号文本
//初始化的分数和项目符号
//生成加农炮加入舞台。
//生成平面和项目符号数组。
//按下键盘释放事件侦听器。
stage . addevent listener(keyboard event。KEY_DOWN,keyDownFunction);
//进入帧事件监听器检测子弹打飞机的碰撞检测。
addEventListener(事件。ENTER_FRAME,checkForHits);
//生成下一个平面
set nextplane();
}
//不时生成飞机
公共函数setNextPlane() {
//1000ms到2000ms生成一架飞机。
next plane . start();
}
公共函数newPlane(事件:TimerEvent) {
//随机边缘、速度和高度
//生成飞机
var p:飞机=新飞机(侧面、速度、高度);
//冲突检测
}
}
if((shots left = = 0)& amp;& amp(bullets.length == 0)) {
endGame();
}
}
//按键盘。
公共函数keyDownFunction(event:keyboard event){
if (event.keyCode == 37) {
leftArrow = true
} else if (event.keyCode == 39) {
rightArrow = true
} else if (event.keyCode == 32) {
fireBullet();
}
}
//释放键盘
公共函数keyu function(event:keyboard event){
if (event.keyCode == 37) {
leftArrow = false
} else if (event.keyCode == 39) {
rightArrow = false
}
}
//生成新的项目符号
公共函数fireBullet() {
if(shots left & lt;= 0)返回;
var b:Bullet = new Bullet(aagun.x,aagun.y,-300);
addChild(b);
bullets . push(b);
shots left-;
showGameScore();
}
公共函数showGameScore() {
show score . text = String(" score:"+shot shit);
ShowShots.text = String("剩余项目符号:"+shots left);
}
//从数组中获取平面
公共函数removePlane(plane:飞机){
对于(飞机中的变量I){
if(飞机[i] ==飞机){
planes.splice(i,1);
打破;
}
}
}
//获取数组的一个项目符号
公共函数removeBullet(bullet:Bullet) {
for(变量i in bullets) {
if (bullets[i] == bullet) {
bullets.splice(i,1);
打破;
}
}
}
//游戏结束,把界面上的东西去掉。
公共函数endGame() {
//移除平面
for(var I:int = airplanes . length-1;我& gt=0;我- ) {
飞机[我]。delete plane();
}
飞机=空;
aa gun . delete gun();
aagun = null
//删除侦听器
stage . removeeventlistener(keyboard event。KEY_DOWN,keyDownFunction);
stage . removeeventlistener(keyboard event。KEY_UP,keyu function);
removeEventListener(事件。ENTER_FRAME,checkForHits);
next plane . stop();
nextPlane = null
gotoAndStop(" game over ");
}
}
}
5.编写AAGun.as类。
创建类的方法与步骤3相同。首先,选择库中的AAGun组件,并打开“项目”面板来创建一个类。勾选“将类绑定到库组件”前面的框,并单击“使用选定的库组件”单选按钮。图:绑定库组件
AAGun类:保税库中的枪械组件,左右移动,检测边界,自动销毁。
包{
导入flash . display . *;
导入flash . events . *;
导入flash . utils . gettimer;
公共类AAGun扩展MovieClip {
静恒速:Number = 150.0;
private var last time:int;//控制运动的计时器
公共函数AAGun() {
//枪的初始位置
this.x = 275
this.y = 340
//练习
addEventListener(事件。ENTER_FRAME,move gun);
}
公共函数moveGun(event:Event) {
//获取时差
var time passed:int = getTimer()-last time;
last time+= time passed;
//当前位置
var newx = this.x
//向左移动
if (MovieClip(parent)。左箭头){
newx-= speed * time passed/1000;
}
//向右移动
if (MovieClip(parent)。向右箭头){
newx+= speed * time passed/1000;
}
//检测边界
if(newx & lt;10)newx = 10;
if(newx & gt;540)newx = 540;
//更新位置
this.x = newx
}
//从屏幕上移除枪支和事件。
公共函数deleteGun() {
parent . remove child(this);
removeEventListener(事件。ENTER_FRAME,move gun);
}
}
}
新文件plane.as
飞机类:国家图书馆中的飞机部件。随机飞机,随机速度,五种飞机样式,检测是否飞出边界,检测被子弹击中。自动破坏和爆炸效果。
//飞机的速度和方向
//控制运动的计时器
//左右移动
//检测边界
//检测到碰撞,子弹击中飞机,跳转到标签为“爆炸”的帧,演示爆炸动画。
//从舞台上移除平面和事件。
新文件Bullet.as
Bullet类:bond库中的bullet组件。控制子弹的飞行方向,检测子弹是否飞出屏幕。
包{
导入flash . display . movie clip;
导入flash . events . event;
导入flash . utils . gettimer;
导入flash . utils . timer;
导入flash . events . timer event;
public类Bullet扩展MovieClip {
私有var dy:Number;//子弹的速度和方向。
private var last time:int;
公共函数Bullet(x,y:Number,speed: Number) {
//初始位置
this.x = x
this.y = y
//获取速度
dy =速度;
//动画
last time = getTimer();
addEventListener(事件。ENTER_FRAME,move bullet);
公共函数moveBullet(event:Event) {
//获取时差
var time passed:int = getTimer()-last time;
last time+= time passed;
//项目符号移动
this . y+= dy * time passed/1000;
//子弹划过屏幕上方。
如果(this.y & lt0) {
delete bullet();
//从舞台上移除项目符号和事件。
公共函数deleteBullet() {
MovieClip(父)。remove bullet(this);
parent . remove child(this);
removeEventListener(事件。ENTER_FRAME,move bullet);
在所有的类文件都保存好之后,回到AirRaid.fla的场景,按Ctrl+Enter进行测试,看看你的结果!
简单学个Flash,很好学,还会做动画,很有用。大型游戏要学VB或者C++,游戏质量不好。3DMAX是做特效的。想做游戏,不是一两年就能做出来的。有教这个的课。