如标题所述,我使用第三方pacakge'deng.fzip.FZip'解压缩一个大文件,大约300MB,应用程序崩溃。我发现fzip.load(url:URLRequest)函数是同步的,不同步。我认为原因可能是fzip将总数据加载到自身,然后导致应用程序内存不足。如何在动作脚本3.0中解压缩一个大的.zip文件? 提前thx!
答案 0 :(得分:0)
请记住,无论您在“发布”设置中设置了什么超时,同步方法在Flash Player中的执行时间都不会超过15秒(在AIR中可以更长)。
最好的办法是打开进行解压缩的Class,并在该循环中做一个小的检查:
// before loop
var startingTime:int = getTimer();
// inside the loop
if (getTimer() - startingTime > TIMEOUT_VARIABLE_HERE)
{
// save the i position, break the loop, set timeout for, let's say, 30 ms and start the loop with i = your saved i when breaking out of the loop.
}
这不是一个花哨的解决方案,可以在一秒钟内解决您的问题,但它是解决实际问题的一种非常好的,强大的方法。
不确定这是否相关,但是一个小注:官方Flash Player支持的文件不超过100 MB。 不过我已经看到了一些闪存游戏(在alpha测试中)消耗了超过2GB的内存并且运行良好。