0

Flash for iOS アプリケーションでちょっとした問題が発生しました。外部swfをロードする「開始」ボタンがあります。次に、「ホーム」という別のボタンがあります。これは、次の 3 つのことを行う必要があります。

  1. 外部 SWF をアンロードする
  2. すべての音を止める
  3. フレーム 1 に戻る

すべて動作しているように見えますが、SWF がアンロードされないようです。何度も何度も聞き続けています。

  //code on frame follows...mythbutt_home


 stop();

//home button

mythbutt_home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame_4);

function fl_ClickToGoToAndStopAtFrame_4(event:MouseEvent):void
{
removeChild(fl_ProLoader_3);

}
mythbutt_home.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds);

function fl_ClickToStopAllSounds(event:MouseEvent):void
{
SoundMixer.stopAll();
}

mythbutt_home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame_1);

function fl_ClickToGoToAndStopAtFrame_1(event:MouseEvent):void
{
gotoAndStop(1);
}


//start button

start_button_aboriginal.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_3);

import fl.display.ProLoader;
var fl_ProLoader_3:ProLoader;

//This variable keeps track of whether you want to load or unload the SWF
var fl_ToLoad_3:Boolean = true;

function fl_ClickToLoadUnloadSWF_3(event:MouseEvent):void
{
if(fl_ToLoad_3)
{
    fl_ProLoader_3 = new ProLoader();
    fl_ProLoader_3.load(new URLRequest("myths/myth_aboriginal.swf"));
    addChild(fl_ProLoader_3);
    fl_ProLoader_3.x = 114;
    fl_ProLoader_3.y = 41;
 }
 else
 {
    fl_ProLoader_3.unload();
    removeChild(fl_ProLoader_3);
    fl_ProLoader_3 = null;
}
// Toggle whether you want to load or unload the SWF
fl_ToLoad_3 = !fl_ToLoad_3;
}
4

1 に答える 1

3

まず、複数のフレームでこれを行うべきではありません。外部の .as ファイルを使用することをお勧めします。swf を適切にアンロードするには、swf 自体と swf 内のオブジェクトへの参照をすべて削除する必要があります。これには、次のような弱い参照を使用する必要がある EventListeners が含まれます。

// params: eventName, listener, capturePhase, priority, useWeakReference
someObj.addEventListener("eventName",myFunct,false,0,true);

unloadAndStop(); を使用します。そして最初に取り外します!

removeChild(fl_ProLoader_3);
fl_ProLoader_3.unloadAndStop();
fl_ProLoader_3 = null;

null にした後にローダーをトレースし、出力の内容を確認してください。

于 2013-03-28T09:44:28.110 に答える