GameCorder.net

6.クラスを作る

今回はクラスを作っていきます。
作るのは主人公であるマリオクラスです。
では、mario.jsファイルを作りコードを記述していきます。

/*
	marioクラス
*/
function cMario(){	
	// 変数(座標)
	this.PosX;		// x座標
	this.PosY;		// y座標
	this.AddNumX;		// x座標移動加算量
	this.Dir;		// 向いている方向
}
		

function cMario()
がクラス宣言(コンストラクタ)になります。
もちろん()に引数を入れることもできます。
cMarioとクラス名を宣言していますが、先頭のcはクラスであることが明瞭になるようにつけました。

this.PosX;
この文以降は、いわゆるメンバー変数になり、クラスごとに固有の変数になります。
var PosX;
では、メンバー変数にはならずにクラスごとに固有のものにはなりません。
メンバー変数であることを示すにはthisキーワードをつける必要があります。
次にインスタンスメソッドと呼ばれるメソッドの記述を見ていきます。

インスタンスメソッドの定義

/*
	初期化関数
*/
cMario.prototype.Init = function(x,y){
	this.PosX = x;
	this.PosY = y;
	this.Dir = RIGHT_DIR;
	this.AddNumX = 2;
}
		

cMario.prototype.Init = function(x,y){
この文がインスタンスメソッドの定義になります。
prototype.の後にメソッド名を入れて、function()の括弧内に引数を入れることになります。
ここでは、Initという初期化関数を定義しました。
このように、prototype宣言をし、追加することで、クラスを拡張することができます。
JavaScriptには、色々な書き方がありますが、今回はこの書き方でやってみたいと思います。

クラスを生成する

では、最後にクラスを生成していきます。

g_cMario = new cMario();		// マリオクラスの生成
g_cMario.PosX = 32;			// マリオクラスのメンバーにアクセスする
		

new演算子を使って、新しいクラスを生成します。
今回は、コンストラクタになにも引数を指定していないので、()は空になります。
次に見るように、クラスの要素にアクセスするには.を使います。
これで、基本となるクラス生成ができるようになりました。