リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ 埋め込みアセットとカスタムクラス

ActionScript

埋め込みアセットとカスタムクラス

ライブラリシンボルを埋め込みアセットクラスとし、ドキュメントクラスのスクリプトで配置するサンプル。

JavaScriptを有効にし、最新のFlashPlayerをインストールお願いしますGet Adobe Flash player

埋め込みアセットクラスのスーパークラス(基本クラス)にはカスタムクラスを割り当てている。
また、埋め込みアセットクラス自体にも同名のカスタムクラスを作成。
ボタンはステージ上に直接配置し、インスタンス名を定義済み。

シンボルのタイムライン
タイムラインイメージ

シンボルのプロパティ
シンボルのプロパティ


Main.as(ドキュメントクラス)

package {
	import flash.display.Sprite;
	import fl.controls.Button;
	import flash.events.MouseEvent;

	//ドキュメントクラス
	public class Main extends Sprite {

		//プロパティ
		private var sampleBody1:SampleBody;//スーパークラスはTurnBodyクラス
		public var frontButton:Button;//ステージへ直接配置済み
		public var rightButton:Button;//ステージへ直接配置済み
		public var leftButton:Button;//ステージへ直接配置済み

		//コンストラクタ
		public function Main() {
			setBody();
			frontButton.addEventListener(MouseEvent.CLICK,turnAction);
			rightButton.addEventListener(MouseEvent.CLICK,turnAction);
			leftButton.addEventListener(MouseEvent.CLICK,turnAction);
		}

		//インスタンス生成と配置
		function setBody() {
			sampleBody1 = new SampleBody();
			sampleBody1.x = 275;
			sampleBody1.y = 200;
			addChild(sampleBody1);
			sampleBody1.hello();//SampleBodyクラスのインスタンスメソッド
		}

		//ターンアクション
		function turnAction(e:MouseEvent) {
			switch (e.target.name) {
				case "frontButton" :
					sampleBody1.turnFront();//TurnBodyクラスのインスタンスメソッド
					break;
				case "rightButton" :
					sampleBody1.turnRight();//TurnBodyクラスのインスタンスメソッド
					break;
				case "leftButton" :
					sampleBody1.turnLeft();//TurnBodyクラスのインスタンスメソッド
					break;
			}
		}
	}
}

/*
ライブラリシンボルで定義したSampleBodyクラスはカスタムクラスTurnBodyクラスを継承している為、
インスタンス生成時コンストラクタによってfrontラベルフレームで停止となる。
また、turnFront,turnRight,turnLeftメソッドでfront,right,leftラベルのフレームへ移動停止。
*/


TurnBody.as

package{
	import flash.display.MovieClip;
	
	public class TurnBody extends MovieClip{
		
		//コンストラクタ
		public function TurnBody(){
			turnFront();
		}
		
		//正面
		public function turnFront(){
			gotoAndStop("front");
		}
		
		//右
		public function turnRight(){
			gotoAndStop("right");
		}
		
		//左
		public function turnLeft(){
			gotoAndStop("left");
		}
	}
}

/*
通常、ライブラリシンボルの基本クラス(スーパークラス)はデフォルトで
MovieClip,BitmapData,Sound となっているが、カスタムクラスを継承する
ことも可能。継承するカスタムクラス自体にもベースとなるMovieClip,Sprite
クラス等を継承させて置く。
*/


SampleBody.as

package{
	import TurnBody;
	
	public class SampleBody extends TurnBody{
		
		//コンストラクタ
		public function SampleBody(){
			trace("SampleBodyクラスのインスタンス生成");
		}
		
		//helloメソッド
		public function hello(){
			trace("こんにちは");
		}
	}
}

/*
ライブラリシンボルで定義したクラス名と同じカスタムクラス名、継承クラス名
を定義することで、プロパティやメソッドを持ったシンボルとすることができる。

本例では、さらにスーパークラスにカスタムクラスを継承させている。
尚、継承だけであればライブラリシンボルのプロパティで設定できるため、
不必要であれば、カスタムクラスを作る必要は無い。
*/


出力結果

SampleBodyクラスのインスタンス生成
こんにちは


サンプルのダウンロード

last update 2009.7.29
参考・出典等
「特に無し」

▲page top

topmemogalleryblogtestaboutlinksmail
Copylight(C)2008-2009 Riptac. All Rights Reserved.