cacheAsBitmap对AIR for iOS中使用scrollRect屏蔽的Sprite没有影响

时间:2011-11-01 21:10:13

标签: ios actionscript-3 air

我正在为AIR for iPad开发一个简单的动态菜单UI组件。它基本上是一个与iOS风格相匹配的组合框的轻量级填充。我有一个精灵,其中包含弹出的2到60个项目按钮,让你轻弹/滚动它们,在任何给定的时间只显示约7个项目。

我的第一次尝试在我的精灵上使用了一个遮罩,在固定遮罩下上下移动我的菜单精灵。这在测试装置上产生了低迷的结果(<20fps)。

然后我尝试了一个blitting解决方案,将菜单精灵从显示列表中删除,并使用BitmapData.draw()仅将部分呈现给我需要可见的列表。这在我的Windows开发平台上产生了最好的结果,但这次帧速率在iPad上降至10 fps以下。我假设我正在招致CPU使用率或GPU回读惩罚。最初我曾希望能够以60 fps的速度运行我的应用程序,但是我已经将我的目标提升到更低的30 fps。

这让我第三次使用sprite的.scrollRect屏蔽功能和.cacheAsBitmap来尝试这个UI组件。同样,观察到的行为在Windows与iOS之间的差异很大。在Windows上,它只重绘了应该由scrollRect的尺寸限制的菜单精灵部分。使用iOS,我可以触摸菜单精灵可见区域上方或下方的屏幕区域,即使我的手指在“空”空间,仍然可以拖动菜单!这里的表现相当不错,徘徊在(19 - 25 fps)之间,如果它像在Windows上一样工作,几乎肯定会在30岁时完美。

有没有人对AIR for iOS上的scrollRect功能的行为或在AIR for iOS中实现iOS原生样式滑动菜单的更好方法有任何想法?

注意,上述方法在CPU和GPU模式下都尝试过,但CPU模式的表现要好得多。我使用安装在Flash Pro CS 5.5之上的AIR 2.7,将FlashDevelop作为我的IDE。

1 个答案:

答案 0 :(得分:0)

http://esdot.ca/site/2011/fast-rendering-in-air-3-0-ios-android#comment-10

来自上述链接的非常好的人:“雅,scrollRect基本上是一个禁止移动,基本上忘记了API甚至存在。信不信由你...老学校掩盖是要走的路。我们走了一圈又一圈!“