0

uni プロジェクトのシトラス エンジンに基づいてフラッシュ ゲームを開発しています。

すべてが完了し、引き渡されましたが、プロジェクト全体を Web 用のリリースにコンパイルしようとしています。

flahs ビルダーでは、ファイル --> エクスポート --> ビルドをリリースし、ゲームをコンパイルしました。

.swf ファイルが正常に開き、spirte メニューが開始されますが、ゲームの開始ボタンをクリックすると、ゲームの状態が開始されますが、フラッシュ デバッガーでこれらのエラーが発生して単色でハングアップします。

SecurityError: エラー #2000: アクティブなセキュリティ コンテキストがありません。

開始 TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。com.citrusengine.utils::ObjectMaker$/FromMovieClip() で GameState/initialize() で com.citrusengine.core::CitrusEngine/handleEnterFrame() SecurityError: エラー #2000: アクティブなセキュリティ コンテキストがありません。

開始 TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。com.citrusengine.utils::ObjectMaker$/FromMovieClip() で GameState/initialize() で com.citrusengine.core::CitrusEngine/handleEnterFrame() で

任意の提案をいただければ幸いです

4

2 に答える 2

0

エラー #2000は通常、ファイルが見つからないというエラーです。次のように IOErrorEvent を実行すると、より多くの情報を取得できます。

myLoader.addEventListener(IOErrorEvent.IO_ERROR, IOError)

function IOError(e:IOErrorEvent):void {
    trace(e.text);
}

正しいファイルへのパスに問題がある可能性があります。

エラー #1009は、IOError が原因でロードされていないアセットで作業できないというドミノ効果である可能性があります。他の SWF をステージにロードしていて、それらの子 SWF が準備が整う前にステージを使用しようとする場合にも問題になる可能性があります。この場合、スクリプトはaddedToStageイベントが発生するまでのみ開始する必要があります。次のように設定できます。

if (this.parent is Stage) {
    stageReady();
} else {
    addEventListener("addedToStage", stageReady);
}

function stageReady(e:Event = null):void {
    // begin your setup code here.
}

ここでのロジックは、swf がローダー内にカプセル化されていない場合、親オブジェクトがステージである必要があるということです。それ以外の場合は、addedToStageイベントをリッスンする、ロードされた swf のタイムラインにリスナーを安全に追加できます。

于 2012-05-17T18:51:11.913 に答える
0

おそらく、次の方法で問題が解決します。

すべての初期化コードをカスタム関数にラップします (たとえば、initFunctionOfApplication)。この init 関数が呼び出される前に遅延タイマーを設定します。これは私が以前に抱えていた問題で、少し遅れて修正されました...おそらくこれで問題が解決するでしょう。

setTimeout(function():void{initFunctionOfApplication();}, 3000);

お知らせください!

于 2012-05-17T18:02:03.463 に答える