forked from: flash on 2010-4-30
♥0 |
Line 144 |
Modified 2010-04-30 17:59:35 |
MIT License
archived:2017-03-30 08:01:14
ActionScript3 source code
/**
* Copyright umhr ( http://wonderfl.net/user/umhr )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/9UXG
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.MouseEvent;
import flash.events.Event;
public class Main extends Sprite {
private var _hikouki:Sprite;
private var _marus:Array;
private var _marus_move:Array;
private var _count:Number;
private var _count2:Number;
private var _stage_num:Number;
private var _hp_num:Number;
private var hpFld:TextField;
private var stageFld:TextField;
public function Main():void {
_count=0;
_count2=0;
_stage_num=10;
_marus=[];
_marus_move=[];
_hp_num=10;
this.addEventListener(Event.ENTER_FRAME,onEnter3);
//飛行機描画
var myColor:Number=Math.random();
_hikouki=new Sprite();
_hikouki.graphics.beginFill(myColor * 0xFFFFFF);
_hikouki.graphics.moveTo(0, -4);
_hikouki.graphics.lineTo(3, -2);
_hikouki.graphics.lineTo(7, -2);
_hikouki.graphics.lineTo(7, 0);
_hikouki.graphics.lineTo(3, 0);
_hikouki.graphics.lineTo(3,3);
_hikouki.graphics.lineTo(20,3);
_hikouki.graphics.lineTo(20,10);
_hikouki.graphics.lineTo(3,13);
_hikouki.graphics.lineTo(3,18);
_hikouki.graphics.lineTo(12,21);
_hikouki.graphics.lineTo(12,25);
_hikouki.graphics.lineTo(2,25);
_hikouki.graphics.lineTo(0,28);
_hikouki.graphics.lineTo(-2,25);
_hikouki.graphics.lineTo(-12,25);
_hikouki.graphics.lineTo(-12,21);
_hikouki.graphics.lineTo(-3,18);
_hikouki.graphics.lineTo(-3,13);
_hikouki.graphics.lineTo(-20,10);
_hikouki.graphics.lineTo(-20,3);
_hikouki.graphics.lineTo(-3,3);
_hikouki.graphics.lineTo(-3,0);
_hikouki.graphics.lineTo(-7, 0);
_hikouki.graphics.lineTo(-7, -2);
_hikouki.graphics.lineTo(-3, -2);
_hikouki.graphics.lineTo(0, -4);
addChild(_hikouki);
_hikouki.y=480;
this.addEventListener(Event.ENTER_FRAME,onEnter2);
//HPテキストフィールド
hpFld = new TextField();
hpFld.textColor=0x666666;
var textFormat:TextFormat = new TextFormat();
textFormat.size=20;
hpFld.defaultTextFormat=textFormat;
addChild(hpFld);
hpFld.x=10;
hpFld.text="HP 10";
//ステージテキストフィールド
stageFld = new TextField();
stageFld.textColor=0x666666;
stageFld.defaultTextFormat=textFormat;
addChild(stageFld);
stageFld.x=390;
stageFld.text = "Stage 1";
//1度設定すればOK
this.addEventListener(Event.ENTER_FRAME,onEnter1);
}
private function onEnter1(e:Event):void {
var n:int=_marus.length;
for (var i:int = 0; i < n; i++) {
//_marus[i].parentで、親誰かを取得できる。
//親がいないときには、nullが帰ってくるので、
//親があるときには~という処理を行える
if (_marus[i].parent) {
if (_marus[i].y<550) {
_marus[i].y+=_marus_move[i];
//○と飛行機のヒットテスト
if (_marus[i].hitTestObject(_hikouki)) {
_marus[i].visible=false;
_marus[i].graphics.clear();
_hp_num-=1;
hpFld.text="HP "+_hp_num;
if (_hp_num==0) {
//GAMEOVER画面
var shikaku:Sprite=new Sprite();
shikaku.graphics.beginFill(0xFF3366);
shikaku.graphics.moveTo(0, 0);
shikaku.graphics.lineTo(500, 0);
shikaku.graphics.lineTo(500, 500);
shikaku.graphics.lineTo(0, 500);
shikaku.graphics.lineTo(0, 0);
this.addChild(shikaku);
//GAMEOVERテキストフィールド
var tf:TextField = new TextField();
tf.width=300;
var textFormat:TextFormat = new TextFormat();
textFormat.size=20;
tf.defaultTextFormat=textFormat;
tf.textColor=0xffffff;
tf.y=220;
tf.x=180;
this.addChild(tf);
tf.text="GAME OVER";
removeEventListener(Event.ENTER_FRAME,onEnter1);
removeEventListener(Event.ENTER_FRAME,onEnter2);
removeEventListener(Event.ENTER_FRAME,onEnter3);
}
}
} else {
//_marus[i].yが550を超えたら、親子関係を切る
this.removeChild(_marus[i]);
//_marus[i].graphics.clear();
}
}
}
}
private function onEnter2(e:Event):void {
//飛行機マウスに向かって移動
_hikouki.x+=(stage.mouseX-_hikouki.x)*0.2;
_hikouki.y+=(stage.mouseY-_hikouki.y)*0.2;
}
private function onEnter3(e:Event):void {
_count++;
_count2++;
//ステージカウント
if (_count2==200) {
_stage_num--;
stageFld.text="Stage "+(10-_stage_num);
_count2=0;
_count=0;
}
//○が降ってくる間隔
if (_count==_stage_num) {
_count=0;
var myColor:Number=Math.random();
var myAlpha:Number=Math.random()*0.5+0.3;
var mySize:Number=Math.random()*15+5;
var maru:Sprite = new Sprite();
maru.graphics.beginFill(myColor * 0xFFFFFF, myAlpha);
maru.graphics.drawCircle(0, 0, mySize);
maru.graphics.endFill();
maru.x=Math.random()*450;
this.addChild(maru);
_marus.push(maru);
_marus_move.push(Math.random() * 20 + 1);
//何回も設定する必要は無い
//this.addEventListener(Event.ENTER_FRAME,onEnter1);
}
}
}
}