cacheAsBitmap对iOS中使用scrollRect遮罩的精灵没有影响

cacheAsBitmap对iOS中使用scrollRect遮罩的精灵没有影响,ios,actionscript-3,air,Ios,Actionscript 3,Air,我正在为iPad的AIR开发一个简单的动态菜单UI组件。它基本上是一个轻量级的组合框填充,与iOS风格相匹配。我有一个精灵,其中包含2到60个项目按钮,可以弹出,让你在其中轻弹/滚动,在任何给定时间只显示大约7个项目 我的第一次尝试是在我的精灵上使用一个面具,在固定的面具下上下移动我的菜单精灵。这在试验装置上产生了暗淡的结果(

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

我的第一次尝试是在我的精灵上使用一个面具,在固定的面具下上下移动我的菜单精灵。这在试验装置上产生了暗淡的结果(<20 fps)

然后,我尝试了一种blitting解决方案,将菜单sprite从显示列表中移除,并使用BitmapData.draw()仅将所需列表中的部分呈现为可见。这在我的Windows开发平台上产生了最好的效果,但这一次在iPad上的帧速率降到了10 fps以下。我假设我要么是因为CPU使用率太高,要么是因为GPU回读而受到惩罚。起初我希望我的应用程序能以60 fps的速度运行,但现在我已经把目标降低到了30 fps

这是我第三次尝试使用sprite的.scrollRect掩蔽函数和.cacheAsBitmap来实现这个UI组件。同样,观察到的行为在Windows上的AIR和iOS上有很大不同。在Windows上,它只会重新绘制由scrollRect的尺寸限定的菜单精灵部分。使用iOS,我可以触摸菜单精灵可见区域上方或下方的屏幕区域,即使我的手指在“空”空间上方,也可以拖动菜单!这里的性能不错,徘徊在(19-25 fps)之间,如果它像在windows上那样工作,在30秒时几乎肯定是完美的

有没有人对iOS上的AirScrollRect功能的行为有什么想法,或者有没有更好的方法在iOS上的AirScrollRect上实现iOS本机风格的滑动菜单

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

上面链接中的一个非常好的家伙:“是的,scrollRect基本上是一个禁止使用的移动设备,基本上忘记了API的存在。信不信由你……老派的屏蔽是一种方式。我们一次又一次地使用它!”


上面的链接中有一个非常好的家伙:“是的,scrollRect基本上是一个禁止使用的移动设备,基本上忘记了API的存在。信不信由你……老式的屏蔽方式才是正确的选择。我们一次又一次地使用它!”

我听到的一个相互矛盾的,或者至少是模棱两可的答案是iOS处理位图的AIR。我知道在GPU模式下,所有BitmapData实例都缓存在GPU上,但我无法清楚地了解它们在CPU模式下的处理方式。我猜scrollRect/cacheAsBitmap异常与此有关。我听到的一个相互矛盾或至少模棱两可的答案是iOS处理位图的AIR。我知道在GPU模式下,所有BitmapData实例都缓存在GPU上,但我无法清楚地了解它们在CPU模式下的处理方式。我猜scrollRect/cacheAsBitmap异常与此相关。