Primitive planes на flash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
package { import flash.display.*; import flash.events.*; import flash.utils.Timer; import flash.text.TextField; public class AirRaid extends MovieClip { private var aagun:AAGun; private var airplanes:Array; private var bullets:Array; public var leftArrow, rightArrow:Boolean; private var nextPlane:Timer; private var shotsLeft:int; private var shotsHit:int; public function startAirRaid() { // init score shotsLeft = 20; shotsHit = 0; showGameScore(); // create gun aagun = new AAGun(); addChild(aagun); // create object arrays airplanes = new Array(); bullets = new Array(); // listen for keyboard stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction); stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction); // look for collisions addEventListener(Event.ENTER_FRAME,checkForHits); // start planes flying setNextPlane(); } public function setNextPlane() { nextPlane = new Timer(1000+Math.random()*1000,1); nextPlane.addEventListener(TimerEvent.TIMER_COMPLETE,newPlane); nextPlane.start(); } public function newPlane(event:TimerEvent) { // random side, speed and altitude if (Math.random() > .5) { var side:String = "left"; } else { side = "right"; } var altitude:Number = Math.random()*50+20; var speed:Number = Math.random()*150+150; // create plane var p:Airplane = new Airplane(side,speed,altitude); addChild(p); airplanes.push(p); // set time for next plane setNextPlane(); } // check for collisions public function checkForHits(event:Event) { for(var bulletNum:int=bullets.length-1;bulletNum>=0;bulletNum--){ for (var airplaneNum:int=airplanes.length-1;airplaneNum>=0;airplaneNum--) { if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum])) { airplanes[airplaneNum].planeHit(); bullets[bulletNum].deleteBullet(); shotsHit++; showGameScore(); break; } } } if ((shotsLeft == 0) && (bullets.length == 0)) { endGame(); } } // key pressed public function keyDownFunction(event:KeyboardEvent) { if (event.keyCode == 37) { leftArrow = true; } else if (event.keyCode == 39) { rightArrow = true; } else if (event.keyCode == 32) { fireBullet(); } } // key lifted public function keyUpFunction(event:KeyboardEvent) { if (event.keyCode == 37) { leftArrow = false; } else if (event.keyCode == 39) { rightArrow = false; } } // new bullet created public function fireBullet() { if (shotsLeft <= 0) return; var b:Bullet = new Bullet(aagun.x,aagun.y,-300); addChild(b); bullets.push(b); shotsLeft--; showGameScore(); } public function showGameScore() { showScore.text = String("Score: "+shotsHit); showShots.text = String("Shots Left: "+shotsLeft); } // take a plane from the array public function removePlane(plane:Airplane) { for(var i in airplanes) { if (airplanes[i] == plane) { airplanes.splice(i,1); break; } } } // take a bullet from the array public function removeBullet(bullet:Bullet) { for(var i in bullets) { if (bullets[i] == bullet) { bullets.splice(i,1); break; } } } // game is over, clear movie clips public function endGame() { // remove planes for(var i:int=airplanes.length-1;i>=0;i--) { airplanes[i].deletePlane(); } airplanes = null; aagun.deleteGun(); aagun = null; stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction); stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction); removeEventListener(Event.ENTER_FRAME,checkForHits); nextPlane.stop(); nextPlane = null; gotoAndStop("gameover"); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package { import flash.display.*; import flash.events.*; import flash.utils.getTimer; public class Bullet extends MovieClip { private var dy:Number; / / Vertical speed private var lastTime:int; public function Bullet(x,y:Number, Speed: Number) { / / Set start position this.x = x; this.y = y; / / Get speed dy = Speed; / / Set up animation lastTime = getTimer(); addEventListener(Event.ENTER_FRAME, MoveBullet); } public function moveBullet(event:Event) { / / Get time passed var timePassed:int = getTimer()-lastTime; lastTime += TimePassed; / / Move bullet this.y += Dy*timePassed/1000; / / Bullet past top of screen if (this.y < 0) { deleteBullet(); } } public function deleteBullet() { MovieClip(parent). RemoveBullet(this); parent.removeChild(this); removeEventListener(Event.ENTER_FRAME, MoveBullet); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
package { import flash.display.*; import flash.events.*; import flash.utils.getTimer; public class Airplane extends MovieClip { private var dx:Number; / / Speed and direction private var lastTime:int; / / Animation time 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(); } } / / Plane hit, show explosion 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); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
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; / / Animation time public function AAGun() { / / Initial location of gun this.x = 275; this.y = 340; / / Movement addEventListener(Event.ENTER_FRAME, MoveGun); } public function moveGun(event:Event) { / / Get time difference var timePassed:int = getTimer()-lastTime; lastTime += TimePassed; / / Current position var newx = this.x; / / Move to the left if (MovieClip(parent). LeftArrow) { newx -= Speed*timePassed/1000; } / / Move to the right if (MovieClip(parent). RightArrow) { newx += Speed*timePassed/1000; } / / Check boundaries if (newx < 10) newx = 10; if (newx > 540) newx = 540; / / Reposition this.x = Newx; } public function deleteGun() { parent.removeChild(this); removeEventListener(Event.ENTER_FRAME, MoveGun); } } } |





