« 暗黙的なgetterメソッドとsetterメソッド | メイン | 静的(static)クラスの拡張 »
ビルトインクラスの拡張
Dateクラス、String、Soundクラスといったビルトインクラス(Flash標準装備のクラス)をスーパークラスにすることで、ビルトインクラスを拡張したサブクラスを作ることができます。次の例ではDateクラスを拡張して今日の曜日名を漢字で返すgetYoubi()関数と”年月日(曜日)”で日付を返すgetLongDate()関数を組み込んでいます。
sample→ex04-03/yoDateフォルダ
クラス定義ファイル:YoDate.as
//Dateクラスを拡張する
class YoDate extends Date {
	var youbiList:Array = ["日", "月", "火", "水", "木", "金", "土"];
	var y:Number;
	var m:Number;
	var d:Number;
	var youbi:String;
	var longdate:String;
	//コンストラクタ
	function YoDate() {
	}
	//今日の曜日を返す
	function getYoubi():String {
		youbi = youbiList[this.getDay()];
		return (youbi);
	}
	//長い日付を返す
	function getLongDate():String {
		y = this.getFullYear();
		m = this.getMonth() + 1;
		d = this.getDate();
		youbi = this.getYoubi();
		longdate = y + "." + m + "." + d + " (" + youbi + ")";
		return (longdate);
	}
}
では、実際にYoDateクラスを試してみましょう。YoDateクラスはDateクラスを継承しているので、YoDateクラスでインスタンスthedayを作ると今日の日付のDateオブジェクトが作られます。続いてインスタンスthedayに対してYoDateクラスで定義した2つの関数とDateクラスのsetFullYear()関数を実行してみます。この結果からYoDateクラスはDateクラスをスーパークラスとして確かに継承していることが確認できます。
フレームアクション:yodate.fla
var theday:YoDate = new YoDate();
//YoDateクラスで定義した関数
youbi = theday.getYoubi();
trace(youbi); // 出力→ 金
longdate = theday.getLongDate();
trace(longdate); // 出力→ 2005.1.14 (金)
//Dateクラスの関数
theday.setFullYear(2005, 3, 3);
longdate = theday.getLongDate();
trace(longdate); // 出力→ 2005.4.3 (日)
投稿者 oshige : 2005年2月23日 10:35