Flash for iOS应用程序有点麻烦!我有一个按钮“开始”,它加载一个外部瑞士法郎。然后,我有一个不同的按钮“ home”,它应该执行三件事:
卸载外部瑞士法郎
停止所有声音
返回第1帧
所有SEEMS都可以正常工作,但是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;
}
最佳答案
首先,您不应该在multible框架上执行此操作。最好使用外部.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;
在您将加载器为空之后,对其进行跟踪,并查看输出内容!
关于ios - ActionScript 3.0问题,我的swf无法卸载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15677907/