【问题标题】:most effieciant way to run a flash animation/application for a long period of time长时间运行 Flash 动画/应用程序的最有效方式
【发布时间】:2012-10-19 15:28:23
【问题描述】:

我需要运行一个 Flash 动画(swf 文件)大约 12 小时。这是为了展览。

由于我无法控制的限制,我从笔记本电脑(当前是 windows vista(!))运行它,但我可以通过 VGA 以 1024x768 分辨率重新安装除 mac os 之外的所有设备。

有没有人有过这方面的最佳实践/建议的经验?

是否有更好的操作系统,我是否更好地使用仅运行 Flash 播放器的命令行 linux?将 swf 转换为本机代码并运行它有什么好处吗?

你能想到什么陷阱?

任何建议都非常受欢迎。

N.b 我已经看到了Running the Flash Player over long time period 的问题,但是我正在寻找各种主题的最佳实践和技巧等

如果有人觉得另一个“溢出”会给我更好的建议,请告诉我

感谢任何建议

安德鲁

编辑:

刚刚遇到这个: http://www.adobe.com/devnet/flash/articles/efficiency-tips.html 这里有一些关于优化文件内容的好技巧。

【问题讨论】:

  • 好吧,我可以告诉你,Windows 7 运行起来几乎比 vista 更好,你应该在独立播放器中运行它而不是在某些互联网浏览器中运行它,但我相信你已经知道了。跨度>
  • 我认为根据我的需要,根据基准,它们非常接近。 tomshardware.com/reviews/windows-7-performance,2476-6.html 但我认为 vista 真的很糟糕,随着时间的推移会变得堵塞和迟缓

标签: performance flash animation adobe


【解决方案1】:

只是一些一般提示:

  • 确保您使用独立 Flash Player 的 Release 版本(Debug 版本速度较慢且占用更多内存)
  • 当您不再需要事件侦听器时,请务必移除它们,并且为了安全起见,请在添加事件侦听器时使用弱引用。
  • 如果要将 .swf 文件加载到主 swf 中,请确保在要卸载 .swf 时调用 Loader.unloadAndStop() 而不是 Loader.unload()。
  • 在您不断创建新实例的所有类中,如果确保每个实例占用大量内存,您可以更快地发现内存泄漏。只需在每个类的顶部临时添加一个大的 bitmapData(private var _debugDummy : BitmapData = new BitmapData(2000, 2000);)。然后你可以很快观察内存是否不断增加。 无论您做什么,都不要忘记在完成测试后移除这些假人!

这种情况下的具体提示:

  • 内置以更快的速度运行基于时间的逻辑的能力,因此您可以在更短的时间跨度内模拟“12 小时运行”。这将使查找泄漏变得更加容易。
  • 由于这是一个展览,最好将计算机设置为在崩溃时重新启动闪存(或者如果内存不足则静默退出,这是它意外退出的最常见原因) .我们在我工作的公司为展览所做的是从 Flash 播放器的发行版创建一个投影仪文件 (.exe)。然后我们在机器上运行了一个小型服务(内部构建),它不断检查投影仪 .exe 是否正在运行。如果不是,它会再次启动它。正如我所说,该服务是内部构建的,但您可能会找到类似的东西。此外,最好将计算机设置为在计算机启动时启动闪存,以防断电并重新启动计算机。如果是展览,你就不能太偏执了:-)

【讨论】:

  • 谢谢你,一些好主意。尤其是 12 小时的模拟是我没有想到的。
【解决方案2】:

在独立播放器中运行它,以提高性能并减少出错的机会。

如果它只是一个时间线动画,或者不使用 ActionScript 的东西,它应该被编译得足够好,你可以让它继续运行。

如果其中有任何代码,您需要确保其中没有任何泄漏,并实际检查这一点 - 12 小时肯定足以让重大泄漏显现出来!

你正在运行什么样的东西?

【讨论】:

  • 嗨,它将主要是背景中的循环动画(没有太戏剧化)是(尚未设计)前景中的运动,它将基于时间(每小时触发等(AS3))。内存泄漏是我目前最担心的地方。
  • 你能发布一些你关心的代码吗?我会看看能不能帮助你把风险降到最低。
  • 谢谢,但是最终的产品还没有设计出来,所以我没有任何代码,它会有由时间控制的元素(虽然我将使用时间戳作为互联网倒计时/倒计时/系统时间可能不可用或不可靠)
  • 这应该很简单,如果你的代码是Timer/s,事件监听器和触发器,并且一旦程序启动你就没有创建任何新对象,你应该没问题。如果您有任何顾虑,请在获得代码后修改您的问题,我会为您检查。
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多