flash as3.0气球游戏

我们需要一个大炮和一个底座,大炮可以旋转,而底座固定不动。通过键盘控制射击五颜六色的气球,击中气球显示爆炸的效果,气球消失。

时间轴上共三帧,intro、play和gameover,需要多个级别的排布。level1气球排练成简单的长方形,2级的时候排列成圆形,3级排列成两组圆形。

 

package {import flash.display.*;import flash.events.*;import flash.text.TextField;public class BalloonPop extends MovieClip {// 显示对象private var balloons:Array;private var cannonball:Cannonball;private var cannonballDX, cannonballDY:Number;// 按键private var leftArrow, rightArrow:Boolean;// 游戏属性private var shotsUsed:int;//跟踪炮弹的数量private var speed:Number;//速度private var gameLevel:int;//级别private const gravity:Number = .05;//重力public function startBalloonPop() {gameLevel = 1;shotsUsed = 0;speed = 6;gotoAndStop("level1");}public function startLevel() {showGameScore();// 创建对象数组findBalloons();// 侦听键盘stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);// 检测碰撞addEventListener(Event.ENTER_FRAME,gameEvents);}public function findBalloons() {balloons = new Array();// 遍历所有的显示对象for(var i:int=0;i -20) newRotation = -20;//重定位cannon.rotation = newRotation;}public function moveCannonball() {// 只有当炮弹存在时才移动if (cannonball != null) {// 改变位置cannonball.x += cannonballDX;cannonball.y += cannonballDY;// 增加重力cannonballDY += gravity;// 判断炮弹是否落到地面if (cannonball.y > 340) {removeChild(cannonball);cannonball = null;}}}// 碰撞检测public function checkForHits() {if (cannonball != null) {// 遍历所有的气球for (var i:int=balloons.length-1;i>=0;i--) {// 判断他是否与炮弹接触if (cannonball.hitTestObject(balloons[i])) {balloons[i].gotoAndPlay("explode");break;}}}}// 按下键public function keyDownFunction(event:KeyboardEvent) {if (event.keyCode == 37) {leftArrow = true;} else if (event.keyCode == 39) {rightArrow = true;} else if (event.keyCode == 32) {fireCannon();}}// 释放键public function keyUpFunction(event:KeyboardEvent) {if (event.keyCode == 37) {leftArrow = false;} else if (event.keyCode == 39) {rightArrow = false;}}// 发射炮弹public function fireCannon() {if (cannonball != null) return;shotsUsed++;showGameScore();// 创建炮弹cannonball = new Cannonball();cannonball.x = cannon.x;cannonball.y = cannon.y;addChild(cannonball);// 将大炮和底座移到上面addChild(cannon);addChild(cannonbase);// 设置炮弹的方向cannonballDX = speed*Math.cos(2*Math.PI*cannon.rotation/360);cannonballDY = speed*Math.sin(2*Math.PI*cannon.rotation/360);}// 气球回调函数,将自己移除public function balloonDone(thisBalloon:MovieClip) {// 从屏幕中移除removeChild(thisBalloon);// 从数组中查找和移除for(var i:int=0;i


时间轴脚本:

气球需要在自身的时间轴的最后一帧调用balloonDone。(爆炸后气球消失)

3个级别都需要调用startLevel函数:

startLevel();

同时,intro帧需要设置一个按钮用于开始游戏:

stop();
startButton.addEventListener(MouseEvent.CLICK,clickStart);
function clickStart(event:MouseEvent) {
 startBalloonPop();
}

同样的,leveover帧上需要设置自身的按钮,用来调用主类中的clickNextLevel函数:

nextLevelButton.addEventListener(MouseEvent.CLICK,clickNextLevel);
最后,gameover帧也需要为按钮添加脚本:

playAgainButton.addEventListener(MouseEvent.CLICK,playAgainClick);
function playAgainClick(e:MouseEvent) {
 gotoAndStop("intro");
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部