as3 air unloadAndStop()事件监听器或计时器

时间:2012-11-14 17:48:13

标签: actionscript-3 air

我的空中应用程序一遍又一遍地播放外部瑞士法郎,直到玩下一个外部瑞士法郎。为了避免内存泄漏我正在使用unloadAndStop()。我正在使用两个计时器。第一个unloadAndStops swf。第二个等待两秒然后再次加载它。

这种方法(加上使用弱引用)似乎可以控制内存。但是,我宁愿不使用计时器而是使用事件监听器。是否有一个事件监听器,当unloadAndStop完成然后再次加载swf时。

这就是我的想法:

var TIMER_INTERVAL:int = int(duration);
var t:Timer = new Timer(TIMER_INTERVAL);
t.addEventListener(TimerEvent.TIMER,updateTimer,false,0,true);
t.start();

private function updateTimer(e:TimerEvent):void 
{
    swfLoader.unloadAndStop(true);      
    swfLoader.addEventListener(Event.UNLOAD,onSWFUnloadComplete,false,0,true);
}

private function updateTimer(e:TimerEvent):void 
{
    var swfSource2:String = File.applicationStorageDirectory.nativePath.toString();
    swfLoader.load(swfSource2+'\\'+name_xml);
}

1 个答案:

答案 0 :(得分:1)

unloadAndStop不是异步方法,因此卸载事件并不真正相关。幕后可能发生的事情是,需要1个完整的帧来完全处理电影对象/听众,这就是为什么你在同一个代码块中再次加载它的问题。

如果您在再次加载之前只等一帧,则应该得到您期望的结果。

现在,当然最好的解决方案是进入加载的swf的源文件并修复内存泄漏。

相关问题