2

mx.controls.SWFLoader コンポーネントを使用して Flex 4 アプリケーションをロードする Flex 4 アプリケーションがあります。各サブアプリもスタンドアロンで実行されるため、同じ swf-subapp を数回ロードします。サブアプリのコンテンツは、ローダー コンテキストを介して渡す XML によって決定されます。

これは最近まで機能していましたが、2 回目に同じ swf を (別の xml で) ロードすると、ロードされた swf は FlexEvent.INITIALIZE がトリガーされた後に実行を停止します (初期化されたイベント ハンドラーでは何も実行していません)。つまり、コードを開始する場所である CreationComplete イベントを取得しません (さらに悪いことに、エラーも発生しません)。

メイン アプリケーションの別の部分に取り組んでいるので、どの変更がプロジェクトをクラッシュさせたかはよく覚えていませんが、覚えているのは、Flex SDK を更新したことと、関連する同様のサイレント エラーが発生したことです。 SDK の以前のアップグレード。

私のメイン アプリケーションでは、新しい SWF をロードする前に自分でクリーンアップを行っているので、ゴミが横たわっていてはいけません。

助けてください!

4

1 に答える 1

0

解決しました。

swfの最初のインスタンスをメモリに保持するenterframeハンドラーがあり、それが何らかの方法で次のインスタンスのロードをブロックしました(ただし、親コンテナーでremoveAllElementsを使用し、それでうまくいくことを期待していました)。

ここで、NativeSignalを使用して、onRemoveハンドラー(RobotLegs)のリスナーからすべてのリスナーを削除します。チャームのように機能します。

于 2012-12-18T09:05:34.440 に答える