2013-03-28 95 views
0

在Flash for iOS應用程序中遇到一些問題!我有一個加載外部swf的按鈕「開始」。然後,我有不同的按鈕,「家」,它應該做三兩件事:動作腳本3.0問題,我的SWF不卸載

  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; 
} 
+0

首先,在卸載後跟蹤swf,看看它是否存在...即時猜測swf創建一個新的聲音,所以如果你刪除了SWF聲音仍然存在,你也許需要刪除聲音; – joshua 2013-03-28 09:43:39

+0

也許如果你沒有反編譯代碼,你可能會更好地理解它。 – 2013-03-28 13:42:19

回答

3

首先你不應該在多幀中做這件事。最好使用外部.as文件。 要正確卸載swf,您需要刪除所有對swf本身和swf中對象的引用。這包括你應該使用弱REFFERENCE這樣的事件偵聽器:

// 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; 

並且在您將它清空後跟蹤加載程序,並查看輸出結果如何表示!

+0

嗨 - 非常感謝您的回答!我無法使用外部AS文件,所有代碼都必須位於主(父)文件中。我在swf中沒有任何代碼。你說我需要在一幀上擁有全部父代的所有代碼,我假定第1幀? – 2013-03-29 08:35:32

+0

然後,你發送的這兩段代碼;他們會去哪裏? – 2013-03-29 08:35:53

+0

對不起,還有一個問題(我是AS3的初學者);我會用什麼來取代「someObj」?孩子?按鈕名稱?而且,我會用什麼替換「eventName」?還是保持那樣? – 2013-03-29 08:37:46