読者です 読者をやめる 読者になる 読者になる

年の功より亀の甲

カメがプログラミングとか技術系について書くブログです。

ActionScript3.0開発オンライン会 第1回 ソースコード報告 vol.2

ここでは、

AS-Studio.fla

GameLoop.as

GameBasic.as

の第1回分のソースコードを掲載していきます。

flaファイルですが、こちらではゲームに入れていく素材やアニメーションをしているムービークリップを入れるためのスクリプトが記載されています。

コードは次のとおりです

import GameBasic;
import Library.*;
GameBasic.Instance().Dataset(Loop);
GameBasic.Instance().EventAdd(stage);
GameBasic.Instance().GameTimeStart();

この5行だけが、現在はflaファイルに記述されています。

まず上2行ですが、GameBasicはゲームの基本部分のクラスで、LibraryはボタンなどUIであったりサウンドの管理をするためのクラスを入れていくパッケージと呼ばれる単位のものです。

import Library.*;なのでLibraryパッケージに含まれているクラスを全て読み込むという構造になっています。

GameLoop.asについては、GameBasicで利用している関連のメソッドと宣言周りだけ
ここでは掲載します。

package {
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
	import flash.display.Stage;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.events.KeyboardEvent;
	import flash.media.*;
	import loop;
	import Character;
	import Player;
	import Enemy;
	/*import UpSound;
	import DownSound;
	import ShotSound;
	import EnemyData;
	import ColorObject;*/
	public class GameLoop {
		protected var GameTimer:Timer=new Timer(10,0);
		protected var GameClip:loop;
		protected var GameColor:ColorObject = new ColorObject();
		private var workflag:int=0;
		private var prevwork:int=0;
		private var SoundChanel:SoundChannel = new SoundChannel();
		protected static var instance:GameLoop = new GameLoop();
		private var Mycharacter = new Player();
		private var EnemyArray:Array = new Array();
		private var EnemyTmp:Enemy;
		private var Score=0;
		private var s_array:Array=new Array(3);
		protected var Display:Stage;

まず前半の導入部分はここまでです。
ゲームとして考えた場合に必須部分を紹介します
今回はマウスでのクリックゲームとなっていくので、Mouse部分
そして次にflaファイルの描画領域を引き継ぐためのStageクラスのインスタンスとして
Displayを紹介します Flaファイルで定義された画面のサイズをこれによって引き継ぐことができます

また、ゲームなのでキャラクターのアニメーションやほかにも時間経過の要素が必要なので
Timerクラスのインスタンスも生成しています。

public function Dataset(Data:loop):void {
			instance.GameClip=Data;
			instance.GameClip.x=0;
			instance.GameClip.y=0;
			instance.GameClip.visible=true;
			instance.GameTimer.addEventListener(TimerEvent.TIMER, doTimer);
			instance.GameColor.ColorSet(90,90,90);

		}

ゲームの基本的なタイマーとタイムを押したときの色を変更する場合の色、それから基本的なムービークリップ(背景やUIなど)のセットをDatasetメソッドで行っています

public function EventAdd(Main:Stage) {
			// イベントを登録
			instance.Display=Main;
			instance.Display.addEventListener(KeyboardEvent.KEY_DOWN,KeyDownFunc);
			instance.Display.addEventListener(KeyboardEvent.KEY_UP,KeyUpFunc);
			instance.Display.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownFunc);
		}

こちらは現在継承前の状態を引き継いでしまっていますが、画面内で
キーボードをクリックされたときに呼び出すメソッドなどの設定をこちらでしています

public function GameTimeStart():void {
			instance.GameTimer.start();
}

ゲーム内でのタイマーイベントを呼び出すメソッドです。これによって、ゲーム内で敵キャラクターを動かすイベントなどが起動していくことになります。


それでは、最後にGameBasic.asのコードです。

package {
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
	import flash.display.Stage;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.events.KeyboardEvent;
	import flash.media.*;
	import loop;
	import Character;
	import ColorObject;


	public class GameBasic extends GameLoop {
		private static var instance_basic:GameBasic = new GameBasic();

		public static function Instance():GameBasic {
			return instance_basic;
		}
		
		public function GameBasic(){
		
		}
	}

}

中身がほとんどかかれていません
あくまでGameLoopを引き継いで基本動作ができるようにしたといった状態のものです。
なので、本格的な画面の設定などは次回以降になって行きます。

最後に簡素ではありますが、成果画面を貼り付けておきます

f:id:sakuriver:20140806225900p:plain