我有一个外部SWF,我打算用它来加载动画片段,其内容需要能够在不改变源文件的情况下进行更改。
我得到它加载完全正常,一切运行良好,然后我卸载它,将值设置为null只是为了安全,应用程序仍然运行良好没有错误,但当我尝试再次加载它,我跟踪显示它正在加载100%,但最终的onComplete函数似乎没有触发,除非我再次单击加载按钮,但随后它加载了另一个swf副本。
任何人都会遇到类似的事情或知道发生了什么事情?
编辑:以下是代码示例:
var swfFileName:String = "path/to/file.swf";
var swfFilePath:File = File.applicationStorageDirectory.resolvePath(swfFileName);
var inFileStream:FileStream = new FileStream();
inFileStream.open(swfFilePath, FileMode.READ);
var swfBytes:ByteArray = new ByteArray();
inFileStream.readBytes(swfBytes);
inFileStream.close();
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loaderContext.allowCodeImport = true;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
loader.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, loadError);
loader.loadBytes(swfBytes, loaderContext);
这是删除代码:
function remover(event:Event = null):void {
loader.unloadAndStop();
loader = null;
swfFileName = null;
swfBytes = null;
loaderContext = null;
trace("removed");
}
在swfLoaded函数中添加了一些内容并删除了卸载功能,但是我已经删除了这些内容以尝试缩小此示例中的原因。从跟踪中我已经完成了Progress事件中的Percentage跟踪是在第二次加载函数期间没有其他任何事情发生之前触发100的最后一件事。我第一次尝试运行它,运行正常并显示所有内容都具有完美的功能。
答案 0 :(得分:0)
我终于解决了这个问题。事实证明这一行:
new LoaderContext(false,ApplicationDomain.currentDomain);
由于某种原因我不完全理解导致它被删除。我通过允许运行默认设置来修复它:
new LoaderContext();
唯一的缺点是我需要做更多的工作来加载和使用外部swf中的库对象,但现在它再次工作。