プリローダーとメイン アプリケーション クラス (すべて AS3 / Flash CS4) の間のやり取りに関して、奇妙な動作が見られます。大まかに言えば、イベントの流れは次のとおりです。
- Preloader.swf は、メイン アプリである main.swf と、プリローダーによってさまざまな URL からオブジェクトに組み立てられるテキストと画像で構成されるカスタム オブジェクトのアセットの 2 つを読み込みます。
- 読み込みが完了すると、Preloader は main.swf を子として追加します。次にプリローダーが呼び出されます
init(myCustomObject)
myCustomObject は、ステップ 1 でプリローダーによってアセンブルされたオブジェクトへの参照であり、public function init(customObject:CustomObject):void)
Main.as のメソッド シグネチャです。(Preload.as は Main を型 * のオブジェクトにキャストし、コンパイル時のエラーを恐れずに任意の関数を呼び出すことができるようにします。) - Main.as は実際にはアプリケーション自体のコンテナーであるため、
新しいアプリケーション (customObject);
プリローダーによってアセンブルされた customObject への参照を渡し、それを子として追加します。
アプリケーションの実行時にメッセージをログに記録できるように、Thunderboltをインストールしました。手順 3 での Application オブジェクトのインスタンス化が問題の原因です。なんらかの理由で、
myMainApplication = new Application(customobj);
Main.as のステートメントが素敵な#1009
エラーをスローしています。これは通常、null ポインター参照または類似のものを示しています。
奇妙なことに、 にログを追加したところ、問題なくApplication.as
への参照を受け取っているようです。inのコンストラクターcustomObject
を呼び出すtoString()
と、期待されるデータが正確に返されます。customObject
Application
つまり、Main.as のステートメントmyMainApplication = new Application(customobj);
は、成功と失敗を同時に行っているように見えます。何を与える?