/**
* Copyright raa ( http://wonderfl.net/user/raa )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/if7k
*/
// forked from Kerolos.Hany's forked from: Airplanes
package {
import flash.text.TextField;
import flash.display.AVM1Movie;
import flash.media.SoundChannel;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.net.URLRequest;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.display.Loader;
import flash.display.Bitmap;
import flash.display.Stage;
import flash.utils.setTimeout;
import flash.events.MouseEvent;
import flash.media.Sound;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
var speed:Number = 5;
var delay:int = 3000; //3 seconds)
var timer:Timer = new Timer(delay);
var player:Object = {};
var copy:Bitmap;
var keys:Object = {};
var canShoot:Boolean = true;
var stg:* = this;
var sc:SoundChannel = new SoundChannel();
var sc2:SoundChannel = new SoundChannel();
var sounds:Object = {};
sounds["airplane1"] = new Sound();
sounds["airplane2"] = new Sound();
sounds["music"] = new Sound();
sounds["gameover"] = new Sound();
sounds["gun"] = new Sound();
sounds["explode"] = new Sound();
sounds.play = function(snd:String):void
{
this[snd].play();
};
sounds["airplane1"].load(new URLRequest("http://angelhdz.com/planes/airplane1.mp3"));
sounds["airplane2"].load(new URLRequest("http://angelhdz.com/planes/airplane2.mp3"));
sounds["music"].load(new URLRequest("http://angelhdz.com/planes/music.mp3"));
sounds["gameover"].load(new URLRequest("http://angelhdz.com/planes/gameover.mp3"));
sounds["gun"].load(new URLRequest("http://angelhdz.com/planes/gun.mp3"));
sounds["explode"].load(new URLRequest("http://angelhdz.com/planes/explode.mp3"));
sc = sounds["music"].play(0,999);
sc.addEventListener(Event.SOUND_COMPLETE, function():void
{
sc = sounds["music"].play(0,999);
});
player.speed = 5;
stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void
{
keys[e.keyCode] = true;
});
stage.addEventListener(KeyboardEvent.KEY_UP, function(e:KeyboardEvent):void
{
keys[e.keyCode] = false;
});
ImagesLibrary.loadImages(this, new Array("plane.png", "enemy.png", "explode.png"), function():void
{
ImagesLibrary.trace("Controls: Movement - Keyboard Arrows, Shoot - Spacebar");
ImagesLibrary.trace("All images loaded.");
var startBtn:Button = new Button();
startBtn.label = "Start";
startBtn.x = stage.stageWidth/2 - startBtn.width/2;
startBtn.y = stage.stageHeight/2- startBtn.height/2;
startBtn.addEventListener(MouseEvent.CLICK, function():void
{
removeChild(startBtn);
sc2 = sounds["airplane1"].play();
sc2.addEventListener(Event.SOUND_COMPLETE, function():void
{
sc2 = sounds["airplane2"].play(0, 999);
sc2.addEventListener(Event.SOUND_COMPLETE, function():void
{
sc2 = sounds["airplane2"].play(0, 999);
});
});
//Spawn enemy
timer.start();
timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void
{
var enemy:Sprite = new Sprite();
enemy.name = "enemy"+e.target.currentCount;
copy = new Bitmap(ImagesLibrary.getImage("enemy").bitmapData);
enemy.scaleX -= .8;
enemy.scaleY -= .8;
var random:Number = Math.round(Math.random() * (stage.stageHeight - enemy.height) + enemy.height);
enemy.addChild(copy);
enemy.y = random;
enemy.addEventListener(Event.ENTER_FRAME, move);
addChild(enemy );
});
//Add player
player.clip = new Sprite();
copy = new Bitmap(ImagesLibrary.getImage("plane").bitmapData);
player.clip.addChild(copy);
player.clip.scaleX -= .8;
player.clip.scaleY -= .8;
player.clip.x = 100;
player.clip.y = 100;
player.clip.addEventListener(Event.ENTER_FRAME, collision);
addChild(player.clip);
});
addChild(startBtn);
});
function collision(e:Event):void
{
if(keys[Keyboard.LEFT])
{
player.clip.x -= player.speed;
}
if(keys[Keyboard.RIGHT])
{
player.clip.x += player.speed;
}
if(keys[Keyboard.UP])
{
player.clip.y -= player.speed;
}
if(keys[Keyboard.DOWN])
{
player.clip.y += player.speed;
}
if(keys[Keyboard.SPACE])
{
if(canShoot)
{
var bullet:Bullet = new Bullet(stg, 10);
bullet.x = player.clip.x + (player.clip.width/2);
bullet.y = player.clip.y + (player.clip.height - 10);
addChild(bullet);
canShoot = false;
setTimeout(function():void
{
canShoot = true;
}, 500);
sounds["gun"].play();
}
}
}
function explotion(target:*):void
{
var explode:Sprite = new Sprite();
explode.addChild(new Bitmap(ImagesLibrary.getImage("explode").bitmapData));
explode.width = explode.height = 80;
explode.x = (target.x + target.width/2) - explode.width/2;
explode.y = (target.y + target.height/2) - explode.height/2;
addChild(explode);
var t:Tween = new Tween(explode, "alpha", Back.easeOut, .8, 0, 30, false);
t.addEventListener(TweenEvent.MOTION_FINISH, function(e:TweenEvent):void
{
removeChild(e.target.obj);
});
sounds["explode"].play();
}
function destroy(target:*):void
{
target.removeEventListener(Event.ENTER_FRAME, move);
removeChild(target);
}
function move(e:Event):void
{
var target:Sprite = Sprite(e.currentTarget);
target.x += speed;
if(target.x > stage.stageWidth)
{
destroy(target);
}
if(target.hitTestObject(player.clip))
{
var msg:TextField = new TextField();
msg.textColor = 0xff0000;
msg.htmlText = "<font size='40'>GAME OVER</font>";
msg.width = msg.textWidth;
msg.x = stage.stageWidth/2 - msg.width/2;
msg.y = stage.stageHeight/2 - msg.height/2;
addChild(msg);
explotion(target);
explotion(player.clip);
destroy(target);
timer.stop();
removeChild(player.clip);
ImagesLibrary.trace("GAME OVER");
sc.stop();
sounds["gameover"].play();
sc2.stop();
player.clip.removeEventListener(Event.ENTER_FRAME, collision);
}
for(var i:int = 0; i < numChildren; i++)
{
if(getChildAt(i) is Bullet)
{
if(getChildAt(i).hitTestObject(Sprite(e.currentTarget)))
{
explotion(target);
destroy(target);
}
}
}
}
}
}
}
//Bullet
import flash.display.Sprite;
import flash.events.Event;
class Bullet extends Sprite
{
private var speed:Number;
private var stg:*;
public function Bullet(stg:*, speed:Number)
{
this.speed = speed;
this.stg = stg;
graphics.beginFill(0x000000);
graphics.drawRect(0, 0, 15 , 3);
addEventListener(Event.ENTER_FRAME, move);
}
public function move(e:Event):void
{
e.currentTarget.x -= speed;
if(e.currentTarget.x < 0)
{
var target:Bullet = Bullet(e.currentTarget);
target.removeEventListener(Event.ENTER_FRAME, move);
stg.removeChild(this);
}
};
}
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Sprite;
import flash.display.SimpleButton;
class Button extends SimpleButton
{
private var up:Sprite;
private var over:Sprite;
private var down:Sprite;
private var hitTest:Sprite;
private var formato:TextFormat = new TextFormat();
public function Button()
{
up = new Sprite();
up.graphics.lineStyle(1, 0x666666);
up.graphics.beginFill(0xcccccc);
up.graphics.drawRect(0, 0, 100, 30);
over = new Sprite();
over.graphics.lineStyle(1, 0x00ccff);
over.graphics.beginFill(0xcccccc);
over.graphics.drawRect(0, 0, 100, 30);
down = new Sprite();
down.graphics.lineStyle(1, 0x00ccff);
down.graphics.beginFill(0x00ccff);
down.graphics.drawRect(0, 0, 100, 30);
upState = up;
overState = over;
downState = down;
hitTestState = up;
formato.align = "center";
up.addChild(crearLabel());
over.addChild(crearLabel());
down.addChild(crearLabel());
}
private function crearLabel():TextField
{
var label:TextField = new TextField();
label.defaultTextFormat = formato;
label.width = 100;
label.height = 20;
label.text = "Label";
label.y = 15 - label.height /2;
return label;
}
public function set label(_label:String):void
{
var states:Array = [upState, overState, downState];
for each(var i:Sprite in states)
{
TextField(i.getChildAt(0)).text = _label;
}
}
}
//ImageLibrary class
import flash.display.Sprite;
//Load trace engine
import flash.display.Loader;
import flash.events.Event;
import flash.system.Security;
import flash.system.LoaderContext;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.display.Bitmap;
import flash.events.EventDispatcher;
class ImagesLibrary extends MovieClip
{
public static var images:Array;
public static var loadedImages:Object;
public static var trace:Function;
public static const IMAGES_COMPLETE:String = "imagesComplete";
public static var canvas:Sprite;
public static var callBack:Function;
public static var count:int;
public static function getImage(img:String):Bitmap
{
return ImagesLibrary.loadedImages[img];
}
public static function trim(extension:String):String
{
var extensions:Array = [".jpg", ".gif", ".png", ".bmp"];
for(var i:* in extensions)
{
if(extension.indexOf( extensions[i] ) > -1)
{
return extension.split(extensions[i]).join("");
}
}
return "";
}
public static function loadImages(arg1:Sprite, arg2:Array, arg3:Function):void
{
ImagesLibrary.canvas = arg1;
ImagesLibrary.images = arg2;
ImagesLibrary.callBack = arg3;
var THIS:Sprite = ImagesLibrary as Sprite;
var ld:Loader = new Loader();
Security.allowDomain("*");
ld.load(new URLRequest("http://angelhdz.com/Trace.swf"), new LoaderContext(true));
ld.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void
{
var info:LoaderInfo = e.target as LoaderInfo;
var swf:* = info.loader;
swf.content.init(ImagesLibrary.canvas.stage);
ImagesLibrary.trace = swf.content.trace;
ImagesLibrary.loadedImages = {};
for(var i:* in ImagesLibrary.images)
{
var fileName:String = ImagesLibrary.images[i];
var l:Loader = new Loader();
l.name = ImagesLibrary.trim(fileName);
l.load(new URLRequest("http://angelhdz.com/planes/"+fileName));
l.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void
{
var img:Bitmap = e.target.content as Bitmap;
ImagesLibrary.loadedImages[e.target.loader.name] = img;
ImagesLibrary.count++;
if(ImagesLibrary.count == ImagesLibrary.images.length)
{
ImagesLibrary.callBack();
}
});
}
});
}
}