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を実装しているようにできないのかなぁ...
trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/405
Bのコンストラクタ内でAをattachMovieするか、もしくはコンストラクタではなくonLoadを使うのはどうでしょう?
contributor key : 2006年04月11日 10:58
うぉー,onLoadかー!!
すっかり忘れてたぁ... (p_q )グッスン
助かりました!
contributor nao : 2006年04月11日 15:03