1

Flexアプリでいくつかのモジュールを繰り返し使用し、「loaderInfo.url」変数を介してパラメーターを渡すことで条件を変更しています。これは、特定のモジュールの最初の繰り返しでは問題なく機能しますが、その後の試行では、実際に使用されているものに関係なく、常に最初の作成と同じパラメーターが表示されます。

モジュールの作成時にこの値をリセットする方法はありますか?

private var moduleInfo : IModuleInfo;
private function loadPageModule( pathString : String, pageParam : String ) : void
{
    pathString = "modules/" + pathString + ".swf?param=" + pageParam;

    moduleInfo = ModuleManager.getModule( pathString );
    moduleInfo.addEventListener( ModuleEvent.READY, onPageModuleReady, false, 0, true);
    moduleInfo.load( ApplicationDomain.currentDomain, null, null );
}

「CreationComplete」ハンドラー (「trace( this.loaderInfo.url );」など) でパラメーターを表示すると、?param=string を介して実際に何が渡されたかに関係なく、(特定のモジュールに対して) 毎回同じです。私は何を間違っていますか?

4

2 に答える 2

1

私はあなたのコードに少し混乱しています。「moduleInfo」は loadPageModule のローカル変数です。つまり、関数の実行後にガベージ コレクションを行う必要があります。通常、イベント リスナーを追加すると、オブジェクトの GC が停止しますが、addEventListener の「weakListener」引数を明確に true に設定します。

addEventListener の weakListener 引数を false に設定し、onPageModuleReady でリスナーを手動で削除できますか? 以下のように:

// change true to false on this line
moduleInfo.addEventListener( ModuleEvent.READY, onPageModuleReady, false, 0, false);

// tweak onPageModuleReady
private function onPageModuleReady(e:Event):void {
e.target.removeEventListener(ModuleEvent.READY, onPageModuleReady);
// that will allow the object to be GC'ed 
...rest of your code

その構成で再度テストし、状況が変化した場合は報告してください。

于 2011-02-06T15:10:21.377 に答える
0

なぜこれが何をしているのかはわかりません..しかし..モジュールの異なるインスタンスに一意のパラメーターを渡す効果的な方法は、IModuleInfo.dataパラメーターを使用することです。url メソッドは (私にとっては) 適切に機能しませんでした。

于 2011-02-06T05:26:59.217 に答える