在AIR Mobile应用程序中显示列表项(千+)的最佳方法是什么?

时间:2014-05-02 08:13:31

标签: android ios actionscript-3 mobile air

我正在开发一个正在显示联系人列表的应用程序。该应用适用于Android和iOS,在AS3中开发。该联系人列表包含基本用法1000个项目,可以达到10 000个。

现在,带有那么多项目的displayList当然不起作用。

所以我尝试使用BitmapData(相同的项目在BitmapData上更新,移动和“标记”),然后再次渲染,这对于bitmapData来说太大了。

我现在正在考虑计算联系人列表中滚动的位置,并在displayList上呈现只有屏幕上的内容,但我不知道如何处理它。

针对此类问题的最佳做法是什么?

由于

2 个答案:

答案 0 :(得分:2)

  

我现在正在考虑计算卷轴中的位置   联系人列表并在displayList上呈现只有屏幕上的内容   我不知道如何处理这个问题。

这是正确的方法,它是一种对象池,我认为它也被称为布局虚拟化。我不知道如何在经典AS中做到这一点,但我一直在使用Starling框架(gpu渲染显示列表),而那里的组件lib(称为Feathers),有这样的列表,你不妨查一下它的实施。这是一个演示(查看列表),我已经用成千上万的项目对它进行了测试,它完美地运行: Feathers Component Explorer

但简而言之,我们的想法是创建等于可以同时看到的最大值的视觉组件。然后,每当列表移动时,您必须检查哪些是可见索引。当它们发生变化时,即当项目变为不可见时发生 - 例如,从顶部移开,您将其移动到底部并将其重新用于与其索引相对应的新数据。

答案 1 :(得分:1)

最好使用一些框架 - 搜索UI工具。如果您使用Starling,则有Feathers。你也可以使用MadComponents,这非常好。对于简单的情况,您可以使用MinimalComponents

他们都有内置列表。如果你不喜欢它们,你应该自己建立一个。

最佳做法是仅显示可见项目,并将其他项目从舞台中删除。因此,您必须计算正在滚动的列表的当前位置,计算可见的项目,然后添加它们并显示它们。其他所有东西都应该删除和隐藏。

但是,我认为我提到的一些应该符合您的需求。