Flash幻灯片优化问题

时间:2011-03-17 15:01:53

标签: flash actionscript-3

好的,如果你能忍受我,这将变得复杂(或者我不确定)。我的任务是制作一个flash幻灯片 - 它将会出现在迷你网络书上,就像连接到32英寸显示器的PC一样。它的设置方式是我有一个闪存文件设置为全屏和一个文件夹其中有11个图像和一个XML文件。闪存文件从XML文件中提取图像,如果需要文本。有些图像是平的(没有文本),有些图像是为动态文本设置的,基本上是数字标牌应用程序。

应用程序运行正常,问题是我不知道如何优化它以便长期使用。加载到其中的图像是1920x1080和大约500k-1.2mb但是每个周期将系统内存量增加到由于没有可用内存而崩溃的程度。

我试图弄清楚如何在循环结束时基本上转储,以便内存使用不会使每次旋转加倍。我知道,如果我删除可能对其产生重大影响的事件监听器,但我不确定应用程序中的方式或者更确切地说。

就像我说闪存文件中的所有内容都非常精简,其中有1个AS框架,它在库中没有任何内容或任何动态生成的东西,我确信这是我的问题只是不知道如何解决它。

代码:

Link to the Code, via Pastie

我正在使用一个外部补间类(我讨厌它,但无法弄清楚如何做出淡化)如果需要它,那么你可以运行并看看发生了什么我会压缩它并分享它只是让我知道。

(对不起,这是一个噩梦,试图将它粘贴在这里,4空间的东西很酷但是应该有一个选项来包装大块。)

非常感谢这里的帮助,我真的提前谢谢。

2 个答案:

答案 0 :(得分:1)

根据你所写的内容,我了解到每个新周期你都会再次加载图形而不会抛弃它们。

我要么:

  • 不要再次加载图形,因此只需重复使用已加载的图形;
  • 每当图像从屏幕上消失时,删除对它的所有引用,并取消设置所有侦听器(甚至更好地使用useWeakReference参数)并忘记它。垃圾收集应该自动进行。

答案 1 :(得分:1)

看起来每次需要显示时都会从文件系统中加载每个图像 - 因此这种方法存在一些问题。

1)每次定时器切换时你都会创建新的Loader对象,这意味着当这个东西运行时你最终会得到大量的加载器 - 并且每个加载器都会持有一个图像实例加载。在你的fadeSlideIn方法中,你不是从加载器中删除Event.COMPLETE侦听器,因此每个加载器将永远保留在内存中。

2)特别是位图有一些特性 - 我对细节有点粗略,我已经处理了这个问题已经有一段时间了,但我相信当你清理一个位图时你应该总是做myBitmap。 bitmapData.dispose(),因为bitmapData不能很好地得到GC。

我要做的是将所有图像预先加载到数组中,然后循环遍历数组。对于任何给定的图像,您不必多次使用加载器。您可以尝试使用LoaderMax(https://www.greensock.com/loadermax/)之类的东西来简化加载过程。

祝您好运,如果您有任何其他问题,请告诉我们!