【发布时间】:2015-03-21 11:02:09
【问题描述】:
Flash Pro CC、AS3、Air for Android (v17)、渲染模式 GPU、舞台质量。LOW,FPS:60,测试设备:旧的 Nexus One 智能手机 (Android 2.3.3)。
指南说 GPU 使渲染位图变得便宜,不知何故我无法理解它是如何工作的。
所以我有 49 个单独的位图方块覆盖舞台,中间有一个 MovieClip,中间有一个位图,可以上下移动(跳球)。很简单吧?
这是视图:http://i.stack.imgur.com/EKcJ6.png
所有图形都是位图(不是矢量)。然而我得到 55 fps(它在 53-57 左右变化)。
然后我选择所有 49 个方块并将它们放在一个符号 (MovieClip) 中。视觉上没有任何变化。它似乎略微提高了 FPS,平均 fps 现在约为 57 (55-59)。
然后我获取 MovieClip(其中包含所有方块)并设置 cacheAsBitmap=true。瞧,现在我有 60 fps!
在所有 3 种不同的情况下发生了什么?为什么我需要将位图放入一个 MC 并将这个 MC 缓存为位图 - 方块不是已经位图了吗?
我还尝试将每个方块制作为 MovieClip 并将其缓存为位图,但我仍然获得 55 fps。
是否可以在 60 fps 时保持方块分开?
在我的真实项目中,我在舞台上有许多 MovieClip(约 100 个),但在大多数情况下,一次只有其中一个是动画的。然而不知何故,似乎仅仅存在其他影片剪辑就会降低性能(fps)。显然,我不能将它们全部放入一个 MC 并将其缓存为位图,就像上面的简化示例一样。
我该如何解决这个问题,我该怎么办?
谢谢!
【问题讨论】:
-
为什么 Color Lines 游戏需要 60 fps? :)
-
很好 ;) 为什么不是 60 fps?看起来比 30 fps 好多了。而且我知道即使动画比我拥有的更多,也应该可以达到 60 fps。只需要找到一种方法来优化它。
-
动画在 30 fps 下已经看起来不错,要在 60 fps 下获得视觉差异,您需要至少 60 像素的距离,球必须垂直移动,因此每帧它至少会移动 1 像素。同样在 60 fps 时,电池会消耗得更快,因此在为移动设备设计游戏时,您还应该关心电池寿命。考虑到性能,请尝试将所有影片剪辑成单个位图。 (不缓存为位图,而是将它们中的每一个都放入真正的位图)
-
我同意有时慢速动画不需要超过 30 fps,但在我的情况下,我可以亲眼看到 60 fps 看起来更流畅,我觉得应该可以在没有的情况下实现耗电很多,因为正如我所提到的,我的动画很简单,同时动画的对象很少。
-
不是动画的原因。 Flash 项目具有默认帧速率作为其属性,并且无论您使用什么动画以及使用多少动画,它都会尝试以该帧速率运行。这就是 Adobe 所说的:“应用程序的帧速率决定了每个‘应用程序代码和渲染’周期有多少时间可用,如运行时代码执行基础中所述。[...] 更高的帧速率会消耗更多的 CPU 周期和能量从电池比一个更低的速率。”更多信息:help.adobe.com/en_US/as3/mobile/…
标签: android actionscript-3 flash bitmap gpu