快速业务通道

一个完全使用AS2编制的飞机游戏之制作详解

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12
把飞船, 敌机数组和子弹数组传进去
var myGame = new Game(myShip , enArray , bulletArray);
// ======= 获取键值============ //
someListener = new Object();
someListener.onKeyDown = function () {
myGame.fireLaser();

};
Key.addListener(someListener);
// 游戏循环
_root.onEnterFrame = function(){
myGame.checkKey();
myGame.moveShip(dir);
myGame.moveLaser();
} 这样好了一些,但是仍旧没有得到正确的子弹发射。。。它要比空格键延迟两个键后才发射。
嗯,好吧,这是我这次使用的moveLaser方法:
// ========= move laser ==========//
function moveLaser_old(){
if(hasFired==true){
laserArray[bulletNum]._x += 30;
}
if(laserArray[bulletNum]._x > Stage.width)
{
laserArray[bulletNum]._x = -10;
hasFired = false;
}
} // ============== // 下面是最终(也就是现在)使用的镭射子弹发射方法。
它的运作很简单,得到飞机的位置并传递给子弹。
然后子弹数目开始增加,当数字大于5的时候,它被重新初始化到0。 // ========= FIRE LASER ====== //
function fireLaser(){
if(Key.isDown(Key.SPACE)){
// set start point
laserArray[bulletNum]._y = ship.getY();
laserArray[bulletNum]._x = ship.getX();
// increment the bullet number
++bulletNum;
// if more than 5 bullets , start again at 0
if (bulletNum>5) {
bulletNum = 0;
}
}
} 下面是最终移动子弹的方法,同样是非常的单简。
这个过程遍历所有的子弹,如果有子弹可以提供,就移动它。它仍旧不是很完美,但现在还能凑和着用。 // ======= MOVE LASER ======= //
function moveLaser(){
var bulleti = 0;
while (bulleti<6) {
laserArray[bulleti]._x += 30;
bulleti++;
}
} // ============= // 下面是到目前为止所创建的游戏类: class Game{
// ========= 声明变量
var ship:Spaceship;
var enemyArray:Array;
var laserArray:Array;
var dir:String;
var bulletNum:Number = 0;

// ==== 构造函数==============
function Game(_ship:Spaceship, _enArray:Array,
_bullArray:Array){
ship = _ship;
enemyArray = _enArray;
laserArray = _bullArray;
}

// ==== 检测键被按下的方法 =======
function checkKey():String{
if(Key.isDown(Key.RIGHT)){
dir = "right";
}
else if(Key.isDown(Key.LEFT)){
dir = "left";
}
else if(Key.isDown(Key.UP)){
dir = "up";
}
else if(Key.isDown(Key.DOWN)){
dir = "down";
}
else dir="stop";

return dir;
} // === 移动飞船的方法 =====
// 1.检查按键
// 2.分配给变量dir相应的方向
// 3 把变量dir的值传进spaceship.move方法中
function moveShip(dir:String){
ship.move(checkKey());
}

// ========= 发射子弹 ====== //
function fireLaser(){
if(Key.isDown(Key.SPACE)){
// 设置起始位置
laserArray[bulletNum]._y = ship.getY();
laserArray[bulletNum]._x = ship.getX();
// 增加子弹数目
++bulletNum;
// 如果大于5,重新将数目开始于 0
if (bulletNum>5) {
bulletNum = 0;
}
}
}

// ======= 移动子弹 ======= //
function moveLaser(){
var bulleti = 0;
while (bulleti<6) {
laserArray[bulleti]._x += 30;
bulleti++;
}
} // ============= //


} // ------ 游戏类结束 ------- // 下面是Spaceship类和它所使用的 getX 和getY方法: class Spaceship extends MovieClip{
var dir:String;
// ===== 移动 =========
function move(_dir:String){
dir = _dir;
if(dir=="left") _x -= 20;
if(dir=="right")_x += 20;
if(dir=="up") _y -= 20;
if(dir=="down") _y += 20;
if(dir=="stop"){
_x +=0;
_y +=0;

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号