コンポーネントのネスト





this is flash contents.

Bっていうコンポーネント(自作クラスを継承したシンボルをコンポーネントと呼ぶことに)でAっていうコンポーネントを使用していた場合ってBのコンストラクタが実行されたときにはまだAのインスタンスはAのクラスを継承されていない...
これってどうすればいいんだろ...
1フレーム待つとかちょっとイヤだし...

わかりヅライサンプル...

// class A
class A extends MovieClip {
	private var num:Number;
	
	public function A() {
		this.num = 10;
	}
	
	public function getNum():Number {
		return this.num;
	}
}

// class B
class B extends MovieClip {
	private var a_mc:A;
	
	private var testButton_mc:MovieClip;
	
	public function B() {
		var target:B = this;

		this.testButton_mc.onRelease = function():Void {
			_root.debug_txt.write(target.a_mc.getNum());
		};

		_root.debug_txt.write(this.a_mc.getNum());
		_root.debug_txt.write(this.a_mc instanceof A);
	}
}

Bが生成されたときにAのインスタンスのgetNum()メソッドを読んで出力パネル(右にあるドラッグ可能なパネル)に出力.(この地点ではundefinedとなる.)
さらに
this.a_mc instanceof A
を出力.(→falseとなる.)

でも,ボタン(testButton_mc)を押すとちゃんとAのコンストラクタで初期化した10を出力してくれる.

フレームを待たずにBのコンストラクタが呼ばれた地点でAがクラスAを実装しているようにできないのかなぁ...

download


contributor nao : 2006年04月11日 06:29

trackback

trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/405

comment

Bのコンストラクタ内でAをattachMovieするか、もしくはコンストラクタではなくonLoadを使うのはどうでしょう?

contributor key : 2006年04月11日 10:58


うぉー,onLoadかー!!
すっかり忘れてたぁ... (p_q )グッスン
助かりました!

contributor nao : 2006年04月11日 15:03