【问题标题】:Running Flash Air app in multiple resolutions to help performance以多种分辨率运行 Flash Air 应用程序以提高性能
【发布时间】:2014-01-31 06:33:57
【问题描述】:

所以我有一个内置在 Flash CS 5.5 中的 Air 应用程序(不使用 Starling 或 Stage3D)。在 .fla 中,舞台大小设置为 1600x900。

我发现应用程序在窗口化运行时帧速率不可接受,但如果我允许它全屏运行并指定一个 1600x900 矩形区域用于 stage.fullScreenSourceRect,应用程序运行就像黄油全屏一样。真的,区别是白天和黑夜,这让我有点困惑。

所以我想我的问题是 - 我可以做些什么来获得全屏工作在窗口模式下的流畅结果?

我的第一个想法是尝试制定一些方案,在运行时更改应用程序分辨率,以便在窗口化时以较低的分辨率运行应用程序,但我不确定 Flash 是否可能(可以' t 我认为在运行时更改 stage.stageWidth)

我应该对 NativeWindow 或类似的东西做一些诡计吗?也许是一些 Air 配置文件?我会说我对 Flash 相当了解,但我对 Air 方面的了解不多,所以也许我忽略了一些明显的东西。

感谢任何帮助或建议!

编辑:通过不可接受的帧速率,我说的是 9fps 窗口化与 35fps 全屏相比。就像你拨动一个开关,它在全屏时神奇地似乎被固定了。

【问题讨论】:

  • 为什么这个问题得了负分?不好的问题?这是一个合法的 Flash 问题,我不知道答案...
  • 我想出了一个解决方法。这个想法是以不同的分辨率发布您的 swf,然后在“shell app/swf”中,将适合您的分辨率的 swf 加载到它自己的 NativeWindow 实例中。然后,将 NativeWindow 实例的 bounds 属性设置为与您刚刚加载的 swf 的分辨率相匹配。看起来有点笨拙,但它做了我想要的:)

标签: actionscript-3 flash air


【解决方案1】:

如果你想模仿窗口模式的 fullScreenSourceRect,你可以写这样一行:

stage.scrollRect = new Rectangle(x, y, width, height);

这将通过不在提供的区域之外渲染任何东西来提高性能;

【讨论】:

  • 不知道scrollRect,但是1.它是DisplayObject的属性,不是Stage。 2. 将其更改为 this.scrollRect,而 'this' 是我的 Document 类,它在窗口化时似乎对性能没有帮助。
  • 1) Stage 正在扩展 DisplayObject,因此它共享 scrollRect 属性。 2) 然后你应该分析你的应用程序,看看是什么占用了这么多 CPU。
  • 在 Adob​​e Scout 中达到顶峰。我能看到的最大区别,它看起来像全屏,复制到屏幕需要 5 毫秒(Adobe Scout 中的“复制到屏幕”。窗口化,复制到屏幕需要 23 毫秒。
  • 好的,你怎么知道 FPS 从 35 到 9?猜测或某个库给出了该输出? Scout 对您的 FPS 有何评价?
  • 对不起,我没有尽快回复您,但感谢您的帮助。事实上,我正在从 FPS 计数脚本中读取 FPS。 Scout 的 FPS 计数器要好一些,但我不知道从记忆中。
猜你喜欢
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 2010-10-19
相关资源
最近更新 更多