0

如标题所述,我使用第三方pacakge'deng.fzip.FZip'解压了一个大文件,大约300MB,应用程序崩溃了。我发现fzip.load(url:URLRequest)函数是同步的,而不是异步的。我认为原因可能是 fzip 将全部数据加载到自身,然后导致应用程序内存不足。如何在动作脚本 3.0 中解压缩一个大的 .zip 文件?提前谢谢!

4

1 回答 1

0

请记住,无论您在“发布”设置中设置什么超时,同步方法在 Flash Player 中的执行时间都不能超过 15 秒(在 AIR 中可以更长)。

您最好的选择是打开进行解压缩的类,并在该循环中进行小检查:

// 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。但是,我看到自己有一些消耗超过 2GB 内存并且运行良好的 Flash 游戏(在 alpha 测试中)。

于 2013-08-07T09:05:48.997 回答