0

您可以轻松地连接到 Flex 4 项目渲染器的创建(通过 itemRenderer 或 itemRendererFunction),允许您从自定义对象池中提取渲染器,但是如何将这些渲染器放回池中呢?

我知道布局虚拟化是一种对象池形式,但我想要一种方法来解决这个问题。例如,当 itemRendererFunction 被分配给具有虚拟化布局的数据组时,项目渲染器的构造确实被推迟了,但实例没有被重用——如果可能的话,我希望能够在那里进行干预。

但即使在普通虚拟化渲染器的情况下(实例重新循环),手动管理池仍然很有用。例如,可以在数据组之间共享池,以减少填充每个组所需的初始缓冲区。

有什么方法可以知道 Flex 何时丢弃项目渲染器实例?我有一种下沉的感觉,就是没有可靠的方法来告诉我——尽管也许应该有。

或者,是否有一个疯狂的 hack 可以工作(例如将所有渲染器保留在池中并测试它们的舞台属性以确定可用性)?

4

2 回答 2

1

看起来 SkinnableDataContainer 是开始的地方。文档建议updateRenderer是查看的地方,但它的代码并没有做太多。

它还调度 RendererExistenceEvent.RENDERER_ADD 和 RendererExistenceEvent.RENDERER_REMOVE 事件,如果您想捕捉正在发生的事情,这可能值得一听。

于 2010-10-06T11:08:22.803 回答
0

这是一个非常有趣的问题,RENDERER_REMOVE 看起来像是在使用后将实例存储在池中的好方法。但我看不出如何使用 itemRenderer 或 itemRendererFunction 向数据组提供实例(而不是类)......

于 2010-12-22T15:17:46.573 回答