一个完全使用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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: flash2004伪3D组件教学及下载下一篇: 调用外部swf定位的问题
关于一个完全使用AS2编制的飞机游戏之制作详解的所有评论