加载损坏的swf文件没有显示任何错误

时间:2017-09-08 07:07:55

标签: android actionscript-3 flash

在我的应用中,我需要加载一些外部swf文件。我使用了以下代码:

var file:File;
file = File.documentsDirectory.resolvePath("myfolder/myfile.swf");
if(file.exists)
{
    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, new ApplicationDomain(null));
    loaderContext.allowLoadBytesCodeExecution = true;
    loaderContext.allowCodeImport = true;
    myLoader = new Loader();
    try
    {
        myLoader.loadBytes(swfBytes, loaderContext);
    }
    catch(e:Error)
    {
        trace("Can't read file.");
    }
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadComplete_swf);
    myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop, false, 0, true);
    myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadingError);
}
else
{
     trace("File doesn't exists.");
}

一切正常。但我最近发现我的一些swf文件已损坏。加载这些文件时,它不会发送完整的事件,也不会抛出任何错误。所以,我的问题是,有没有办法找到swf文件是否已损坏?是的我可以替换那些损坏的swf文件。如果再次出现这种问题,这只是一种预防措施。目前,我能想到的只是创建一个计时器并检查完整事件是否发送。如果没有则show不能读取文件消息。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

当文件损坏时,可能会发生各种意外情况。设置超时是处理没有事件加载问题的好方法。正如@seventeen所建议的那样,您可以使用加密库来验证文件哈希,但是这需要您已经有一个要比较的哈希,并且已经触发了加载完成事件。