从应用程序目录中外部加载的SWF未加载两次

时间:2014-02-13 19:16:16

标签: actionscript-3 flash loader

我有一个外部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的最后一件事。我第一次尝试运行它,运行正常并显示所有内容都具有完美的功能。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。事实证明这一行:

new LoaderContext(false,ApplicationDomain.currentDomain);

由于某种原因我不完全理解导致它被删除。我通过允许运行默认设置来修复它:

new LoaderContext();

唯一的缺点是我需要做更多的工作来加载和使用外部swf中的库对象,但现在它再次工作。