1

直接ロードされたときにディスパッチャーにアクセスしようとするとuncaughtErrorEvents、すべてうまくいきます。しかし、別の swf によってロードされたときに同じコードを試すと、参照エラーが発生します。

protected function onAddedToStage(e:Event):void {
    trace("Flash version: " + Capabilities.version);
    try {
      loaderInfo.uncaughtErrorEvents.addEventListener("uncaughtError", onUncaughtError);
      trace("YAY!");
    } catch (e:Error) {
      trace(e);
    }
}

(ブラウザーで) 直接ロードした場合の出力:

Flash version: MAC 10,1,53,64
YAY!

別の「ローダー」SWF によってロードされたときの出力:

Flash version: MAC 10,1,53,64
ReferenceError: Error #1069: Property uncaughtErrorEvents not found on flash.display.LoaderInfo and there is no default value.

他の人がこれを再現できれば、私は感謝しています。

EDITstage.loaderInfo :これも、の代わりに で試しましたloaderInfo。同じ問題...

4

3 に答える 3

1

ロードされたオブジェクトのloaderInfoは、初期化されたオブジェクトのloaderInfoとは異なり、Loaderクラスを介したコンテンツの削除方法も異なります。ドキュメントには、ローダーに関連付けられているloaderInfoではなく、ローダーのuncaughtErrorEventsにリスナーを追加する必要があると記載されています。

ロードされたSWFで発生するキャッチされないエラーを検出するには、Loader.contentLoaderInfo.uncaughtErrorEventsプロパティではなく、Loader.uncaughtErrorEventsプロパティを使用します。

-livedocsリンク

したがって、おそらく、ロードされているのではなくローダーに追加するか、ロードされているかどうかを検出してから、代わりに親などに追加する必要があります。エレガントではないことは知っていますが、それを回避するために考えられることはすべてあります。

于 2010-06-11T08:38:47.837 に答える
1

このリンクを参照してください:https ://bugs.adobe.com/jira/browse/FP-4978

モジュールのハンドラuncaughtErrorEventsに影響を与えるFlashPlayerにバグがあります

AdobeのJIRAに登録して投票すると、バグはより早く修復されます...

于 2011-02-24T08:51:25.097 に答える
0

イベントリスナーを「ルート」にアタッチしました。これは私にとってはうまくいきました:

sprite.root.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);

デバッグ Flash Player ではこれでもエラーになりますが、非デバッグ バージョンでは Flash Player のダイアログ ボックスにエラーが表示され、ハンドラが応答します。ダイアログ ボックスが表示されないようにするには、次を追加します。

event.preventDefault();

それで:

    private function onUncaughtError(event:UncaughtErrorEvent):void
    {
        event.preventDefault();
        // do something with this error
    }

これは AIR で使用していましたが、標準の AS3 プロジェクトでも機能すると思います。

于 2011-02-14T16:58:21.987 に答える