在我的应用中,我已经加载了一些外部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文件中的代码仍在运行。上面的代码有问题吗?如何完全删除加载的文件?任何帮助将不胜感激。