2

SWFLoaderを介してサブアプリケーション(「B.swf」で定義)をロードするメインのFlexアプリケーション(「A.swf」)があり、サブアプリケーションからUncaughtErrorEventをリッスンする必要があります。SubApp('B.swf')内からエラーをスローしたときに、イベントリスナーを呼び出すことができません。

UncaughtErrorEventとUncaughtErrorEventsのasDocを読んだ後、A.swfのloaderInfo(「outter」メインアプリ)とB.swfのloaderInfoにイベントリスナーを追加しました(ドキュメントではここでは実行しないと言っていますが、これはイベントの一部です)キャプチャおよびバブルフェーズのシーケンス...)およびSWFLoader内部FlexLoader.uncaughtErrorEvent(ドキュメントごと)のように:

swfLoader.content.loaderInfo.loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorFunction );  

B.swfのSubApplicationがエラーをスローしたときに、Loader.uncaughtErrorEventsのイベントリスナーセットアップが起動していません。代わりに、メインアプリ(A.swf)のloaderInfoのリスナーが起動します。さらに、A.swfのloaderInfoによって受信されたイベントには、「EventPhase.AT_TARGET」に等しいeventphaseがあり、asDocは、キャプチャフェーズとバブルフェーズでのみディスパッチする必要があると述べています。

私はこれを正しく行っていませんか?何か考えや提案はありますか?

「A.swf」と「B.swf」はどちらもFlexSDK4.1、FlashPlayer10.1でコンパイルされています。ブラウザは、Flashデバッグプレーヤー10.3を実行しているFireFoxです。

ありがとう!

4

2 に答える 2

2

SDKライブラリをA.swfとB.swfの両方のコードにマージするように設定すると、UnCaughtErrorEventsが正しい方法でディスパッチできることがわかりました。

共有ランタイムライブラリ(Flash Builderのデフォルト)を介してリンクされたSDKライブラリでMXベースのFlexアプリケーションを使用する場合はディスパッチされません。

さらに、RSLまたはコードにマージされた純粋なSPARKFlexアプリケーションでも機能します。

ここでの議論を参照してください:http://forums.adobe.com/message/3835326

ここに提出されたFlexバグ:http://bugs.adobe.com/jira/browse/SDK-30996 例については、提出されたバグの添付ファイルを参照してください。

于 2011-08-02T13:39:36.813 に答える
0

AlexHaruiのブログ投稿を参照してください。これでうまくいくはずです。 http://blogs.adobe.com/aharui/2011/04/catching-uncaughterror-in-flex-modules.html

于 2011-07-27T21:56:23.863 に答える