ドキュメントクラスのまとめ

2008/05/29

AS3でのドキュメントクラス。名前をコンフリクトおこしたりして、いやになっちゃう。けど、なんか使った方がいいみたいなんで、まとめ。あと、フレーム移動(gotoAndStop or gotoAndPlay)した後にドキュメントクラスを使う方法も。

■Flaの設定
パブリッシュ設定→ActionScript3.0設定→ステージのインスタンスの自動宣言のチェックをはずす
ドキュメントクラスにパスを通しておく。
1フレーム目にドキュメントクラスのインスタンスをひもづけるために
var hoge:Hoge;
を宣言

■ドキュメントクラスをHoge.asとする。

package {
	import flash.display.MovieClip;

	public class Hoge extends MovieClip
	{
		//ルート直下で名前をつけたものは必ずpublicで記述。
		public var mc1:MovieClip;
		public var mc2:MovieClip;

		public function Hoge()
		{
			//1フレーム目の宣言とひもづける。
			root["hoge"] = this;
		}
	}
}

gotoAndPlayとか呼び出した後にドキュメントクラスのfunctionを呼びたいときは、タイムライン上においたhogeを使ってHogeの中にあるpublic functionをたたけばOK。

※参考 Event.RENDERとstage.invalidateを組み合わせることで、タイムラインに書かずにすむこともできるみたい。だけど、「Playerによってバグが出るかも」なんて言われたら怖いからやらないです。
※備考 ドキュメントクラスが使いたくてこんなことしてるけど、こんなことしなくてもAS2.0のように
var hoge:Hoge = new Hoge(this);
って1フレーム目に書いても同じようにできる。うーん。このEvent.RENDER使わなかったら結局タイムラインに書くことになるから、こっちの方法がいいのかな?

※参考URL
・ドキュメントクラスのメンバがコンフリクト
・AS3のgotoAndStop()問題とEvent.RENDERの使い道
・AS3:タイムラインを移動した直後にフレーム上のオブジェクトにアクセスできない
・ステージに配置したコンポーネントを、ドキュメントクラス内で使う方法

せっかくなので、実行順序を調べた結果を書いておこう。
1.ドキュメントクラスのコンストラクタ
2.rootのEvent.ADDED
3.rootのEvent.ADDED_TO_STAGE
4.rootのタイムラインスクリプト(1フレーム目ね)
5.rootのEvent.RENDER


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る