卸载外部装载的swf

时间:2017-06-01 11:43:17

标签: android actionscript-3 flash

在我的应用中,我已经加载了一些外部swf文件。这是一个游戏文件,所以为了避免沙箱错误,我使用以下代码:

var file:File = File.documentsDirectory.resolvePath("myFilePath");
var toLoadUrl = file.url;
var myUrl:URLRequest;
myUrl = new URLRequest(toLoadUrl);
var inFileStream:FileStream = new FileStream(); 
inFileStream.open(file, FileMode.READ); 
var swfBytes:ByteArray = new ByteArray();
inFileStream.readBytes(swfBytes);
inFileStream.close();

var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);

loaderContext.allowLoadBytesCodeExecution = true;
loaderContext.allowCodeImport = true;
myLoader = new Loader();

myLoader.loadBytes(swfBytes, loaderContext);
//myLoader.load(myUrl, loaderContext);

myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadComplete_swf);
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop, false, 0, true);
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadingError);

要卸载文件,我用过:

if(myLoader)
{
    trace("Unloaded");
    myLoader.unloadAndStop(true);
    myLoader.unload();
}
while(MovieClip(root).holder.numChildren > 0)
{
    var item:DisplayObject = MovieClip(root).holder.removeChildAt(0);
    trace("Removed");
}
if(contains(myLoader))
{
    trace("Remove child");
    removeChild(myLoader);
}

它有效但只有一次。之后它继续堆叠所有文件,甚至代码删除它已被执行。我仍然可以听到声音,swf文件中的代码仍在运行。上面的代码有问题吗?如何完全删除加载的文件?任何帮助将不胜感激。

0 个答案:

没有答案