我正在开发一个正在显示联系人列表的应用程序。该应用适用于Android和iOS,在AS3中开发。该联系人列表包含基本用法1000个项目,可以达到10 000个。
现在,带有那么多项目的displayList当然不起作用。
所以我尝试使用BitmapData(相同的项目在BitmapData上更新,移动和“标记”),然后再次渲染,这对于bitmapData来说太大了。
我现在正在考虑计算联系人列表中滚动的位置,并在displayList上呈现只有屏幕上的内容,但我不知道如何处理它。
针对此类问题的最佳做法是什么?
由于
答案 0 :(得分:2)
我现在正在考虑计算卷轴中的位置 联系人列表并在displayList上呈现只有屏幕上的内容 我不知道如何处理这个问题。
这是正确的方法,它是一种对象池,我认为它也被称为布局虚拟化。我不知道如何在经典AS中做到这一点,但我一直在使用Starling框架(gpu渲染显示列表),而那里的组件lib(称为Feathers),有这样的列表,你不妨查一下它的实施。这是一个演示(查看列表),我已经用成千上万的项目对它进行了测试,它完美地运行: Feathers Component Explorer
但简而言之,我们的想法是创建等于可以同时看到的最大值的视觉组件。然后,每当列表移动时,您必须检查哪些是可见索引。当它们发生变化时,即当项目变为不可见时发生 - 例如,从顶部移开,您将其移动到底部并将其重新用于与其索引相对应的新数据。
答案 1 :(得分:1)
最好使用一些框架 - 搜索UI工具。如果您使用Starling,则有Feathers。你也可以使用MadComponents,这非常好。对于简单的情况,您可以使用MinimalComponents。
他们都有内置列表。如果你不喜欢它们,你应该自己建立一个。
最佳做法是仅显示可见项目,并将其他项目从舞台中删除。因此,您必须计算正在滚动的列表的当前位置,计算可见的项目,然后添加它们并显示它们。其他所有东西都应该删除和隐藏。
但是,我认为我提到的一些应该符合您的需求。