Shooter Game 基本形
シューティングゲーム
♥0 |
Line 54 |
Modified 2012-01-06 22:52:42 |
MIT License
archived:2017-03-09 23:57:14
ActionScript3 source code
/**
* Copyright DanYuya ( http://wonderfl.net/user/DanYuya )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/1ZHn
*/
// シューティングゲーム
package {
// 使用するパッケージをインポートする
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
[SWF(backgroundColor=0x0, width=465, height=456, frameRate=30)]
public class ShooterGame extends Sprite {
public var timer:Timer; // タイマー
public var myCombat:Sprite; // 自機
public var myBullet:Array; // 弾丸(複数)
public var vy:Array; // 弾丸の速度(y方向)
public function ShooterGame() {
// 配列(Array型)のインスタンス生成
myBullet = new Array();
vy = new Array();
// Sprite 型の自機グラフィックスの生成
myCombat = new Sprite();
myCombat.graphics.beginFill( 0x99CC00, 1.0 );
myCombat.graphics.drawRect( -2, 0, 4, 10 );
myCombat.graphics.beginFill( 0x99CC00, 1.0 );
myCombat.graphics.drawRect( -6, 2, 12, 2 );
myCombat.graphics.beginFill( 0x99CC00, 1.0 );
myCombat.graphics.drawRect( -3, 8, 6, 2 );
myCombat.x = stage.mouseX;
myCombat.y = stage.stageHeight - 50;
stage.addChild( myCombat );
// マウス操作に関するイベントハンドラの登録
stage.addEventListener( MouseEvent.MOUSE_MOVE, mMove );
stage.addEventListener( MouseEvent.CLICK, mClick );
// タイマーに関するイベントハンドラの登録とタイマーの開始
timer = new Timer( 50 );
timer.addEventListener( TimerEvent.TIMER, loop );
timer.start();
}
public function mMove( event:MouseEvent ): void{
// 自機の位置をマウスの位置(x座標)に合わせる
myCombat.x = stage.mouseX;
}
public function mClick( event:MouseEvent ): void{
// 弾丸のグラフィックスを生成する
var bullet:Sprite = new Sprite();
bullet.graphics.beginFill( 0xFFFF00, 1.0 );
bullet.graphics.drawCircle( 0, 0, 5 );
bullet.graphics.beginFill( 0xFFFF00, 0.5 );
bullet.graphics.drawCircle( 0, 4, 4 );
bullet.graphics.beginFill( 0xFFFF00, 0.25 );
bullet.graphics.drawCircle( 0, 8, 3 );
bullet.x = myCombat.x;
bullet.y = myCombat.y - 10;
myBullet.push( bullet ); // 弾丸を配列 myBullet に追加する
vy.push( -10 ); // 弾丸の y 方向の速度
stage.addChild( myBullet[myBullet.length - 1] );
}
public function loop( event:TimerEvent ): void{
// 全ての弾丸の運動
for( var i:int = 0; i < myBullet.length; i++ ){
myBullet[i].y += vy[i];
}
}
}
}