私はかなり前から次の問題をデバッグしていて、壁にぶつかりました。
ゲームのさまざまな画面を表すために移動する一連のキーフレームを持つプロジェクトをFlash(CS4、btw)でセットアップしました。それらの1つには、いくつかの異なるキーフレームに表示されるオプションメニューを表すMovieClipが定義されています(その中に子が含まれています)。
私が抱えている問題は、最初にキーフレームに入ったとき(「gotoAndStop」を使用)、およびときどき他のフレームに移動して戻ったときに、このMovieClip参照にアクセスできるように見えることです。しかし、少なくとも1つのケースでは、フレームを終了して戻ったときに、null参照エラーが発生します(TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません)。アクセスしようとすると(getChildByName( "optionMenuTitle"))。システムに0からnumChildrenまで反復させて各オブジェクトの名前を出力しようとしましたが、numChildrenを9として返したにもかかわらず、位置7でNULLを返します。この特定のMovieClip参照がこの中でのみNULLである理由を誰かが知っていますか?場合??
発生するプロセスの基本的な(省略された)要約は次のとおりです。
//set up function to be fired on frame construction
addEventListener(Event.FRAME_CONSTRUCTED, fadeIn, false, 0, true);
public function fadeIn(event:Event):void {
_handler.handle(); //this function is called which runs the debug statement below
trace (mainDoc.numChildren); //displays 9
for (var i = 0; i < mainDoc.numChildren; i++) { trace(mainDoc.getChildAt(i).name); } //throws null when it gets to 7
optionMenuTitle = OptionMenu(mainDoc.getChildByName("optionMenuTitle")); //the original failed call that caused me to debug
}
編集:もう1つの潜在的に有用な情報。そのエラーの上にあるgetChildコマンドをコメントアウトすると、フレームが読み込まれ、MovieClipがステージに視覚的に表示されます(ただし、インタラクティブではなく、子オブジェクトのフレームを常に循環しています)。それでもプログラムでアクセスすることはできません。
別の編集:問題のオブジェクトは、「OptionMenu」という名前のMovieClipのサブクラスです。OptionMenuコンストラクターにブレークポイントを設定し、フレームが正しくロードされると、そのブレークポイントがヒットします。上記のエラーが発生した場合、コンストラクターのブレークポイントに到達することはありません。デバッガーは、フレームをインスタンス化するときにFlashの頭の中で何が起こっているかを確認するためのアクセスを私に与えていないようです。したがって、コンストラクターが呼び出されない理由についてのロジックを確認できません。