如何在 AS3 中加载图像精灵序列时减少内存使用量

Posted

技术标签:

【中文标题】如何在 AS3 中加载图像精灵序列时减少内存使用量【英文标题】:How to reduce memory usages while loading sprite sequences of images in AS3 【发布时间】:2011-09-09 20:08:35 【问题描述】:

我已经制作了一个包含 1000 个 (780 x 480) 大小的图像的精灵序列的 *.swf 文件。之后,我将它嵌入到另一个类中以显示,但每次它在运行时由于内存不足而崩溃(假设我有 2GB 内存空间)。通过避免内存问题,在 AS3 中实现如此大的精灵序列的最佳方法是什么?如果您有任何好的建议,请提供帮助。非常感谢。

【问题讨论】:

780x480 @ 72 dpi 和 24 位颜色每个大约 1 兆,因此您尝试在 swf 中嵌入超过 1 gig 的图像。您的用户必须先下载所有内容,然后才能使用您的软件。 【参考方案1】:

您可能试图一次将它们全部加载到内存中。那是一个巨大的内存量。你真的不需要一次 1000 张图像。可能您可以一次加载 10 - 20 个,并在运行序列时从内存中删除前一次。通过这种方式,您可以减少内存占用。

您是否在主 swf 中嵌入了 1000 张图像?在这种情况下,swf 的大小是多少?这将是巨大的,用户必须等待太长时间才能加载。与其嵌入到主 swf 中,不如动态加载图像可能是一种更好的方法。

【讨论】:

谢谢。但是如何获取这些精灵序列。假设 swf 文件是 36.5 MB,但是当我播放这个文件时,它占用了大约 2GB 的 PC 内存。请帮助(如果可能)修复它。非常感谢。【参考方案2】:

Embad,用户将如何下载如此庞大的 swf?如果您的目标是闪存(不是 AIR),我认为将图像存储在服务器上并按请求下载它们会更好。如果您的目标是 AIR,请按照 Marty 的建议:将 swf 分成更小的 swf。

【讨论】:

谢谢。你能给我任何示例代码来解决这个问题吗?假设它不是 AIR。基于网络的 Flash 应用程序。非常感谢。 嗯。我认为你应该仔细看看flash.net.URLLoader class【参考方案3】:

您为什么不简单地将您的图片制作成视频?

【讨论】:

您可以播放流媒体视频:flashthusiast.com/2008/03/02/…

以上是关于如何在 AS3 中加载图像精灵序列时减少内存使用量的主要内容,如果未能解决你的问题,请参考以下文章

在 Flash AS3 中加载 PHP URL

SetBackgroundDrawable 在内存中加载图像吗?

As3 - 我需要在两个场景中加载 XML 文件吗?

如何在HTML5 / JavaScript中加载/卸载图像

在响应式网格中加载图像时如何使用图像占位符?

使用java在内存中加载2GB [关闭]