最近、表示オブジェクトのコンストラクター関数を変更して、ステージ上にあることを確認しました。しかし、これは子関数に値を渡す私の能力を完全に壊しました。例(わかりやすくするために多くのコードが削除されています):
親:
public var var1:uint;
public var var2:uint;
public var childFunction:ChildFunction;
public function createChild():void
{
childFunction = new ChildFunction( var1, var2 );
addChild( childFunction );
}
子:
public var varA:uint;
public var varB:uint;
public function ChildFunction( varA:uint, varB:uint )
{
trace( varA, varB );
if ( stage )
{
onAddtoStage();
}
else
{
addEventListener( Event.ADDED_TO_STAGE, onAddtoStage );
}
}
public function onAddtoStage( e:Event = null ):void
{
trace( varA, varB );
}
この例では、最初のトレースでvar1
との適切な値を取得しますvar2
が、2番目のトレースでは0と0を取得します。繰り返しテストを行ったところ、コンストラクター関数を終了した後、varAとvarBの値は、パブリック変数として宣言されていても、コンストラクター関数を終了するとすぐに完全に忘れられることがわかりました。
アクションスクリプトについて知らないことがたくさんあることは認めますが、これは頭を悩ませます。どんな助けでも大歓迎です。親の変数を子から見ることができることはわかっていますが、それは必要なものでは機能しません。値を渡して保存する必要があります。