您可以轻松地创建Flex 4项目渲染器(通过itemRenderer或itemRendererFunction),允许您从自定义对象池中提取渲染器,但是如何将这些渲染器放回池中呢?
我知道布局虚拟化是一种对象池形式,但我想要一种方法来实现它。例如,当itemRendererFunction已分配给具有虚拟化布局的数据组时,项目渲染器构造确实是延迟的,但实例不会被重复使用 - 如果可能的话,我希望能够进行干预。
但即使在普通虚拟化渲染器(实例 重新循环)的情况下,能够手动管理池仍然很有用。例如,可以在数据组之间共享池,以减少填充每个组所需的初始缓冲区。
有什么方法可以知道Flex何时丢弃项目渲染器实例?我有一种沉闷的感觉,即没有可靠的方法可以告诉 - 即使可能应该有。
或者,是否存在可以正常工作的疯狂黑客(比如将所有渲染器保留在池中并测试其舞台属性以确定可用性)?
答案 0 :(得分:1)
看起来像SkinnableDataContainer是一个开始的地方。文档建议updateRenderer是值得关注的地方,但它的代码并不多。
它还会调度RendererExistenceEvent.RENDERER_ADD和RendererExistenceEvent.RENDERER_REMOVE事件,如果您想要捕获正在发生的事情,可能值得一听。
答案 1 :(得分:0)
这是一个非常有趣的问题,RENDERER_REMOVE看起来是在使用后在池中存储实例的好方法。但是我没有看到如何使用itemRenderer或itemRendererFunction为数据组提供INSTANCES(而不是类)......