我有一个Spark列表,我在其中手动添加自定义组件(没有项目渲染器)。除了当我在列表中添加数百个项目时(基于几次计算),一切正常,呈现时间增加到几秒钟。Flex Spark列表项呈现延迟刷新
我的问题是:
- 是否柔性自动延时被添加到列表中的组件再现?
- 如果不是那么,我怎么能告诉火花列表,只有一旦一切都被添加渲染组件。
我希望我所问的是有道理的。我非常确定渲染时间正在增加,因为我在自定义组件中有相当多的组件。我只需要简单回答我的问题。
我有一个Spark列表,我在其中手动添加自定义组件(没有项目渲染器)。除了当我在列表中添加数百个项目时(基于几次计算),一切正常,呈现时间增加到几秒钟。Flex Spark列表项呈现延迟刷新
我的问题是:
我希望我所问的是有道理的。我非常确定渲染时间正在增加,因为我在自定义组件中有相当多的组件。我只需要简单回答我的问题。
一件事要知道的是,
ActionScript 3在基于偶数驱动的Flash播放器上运行。这意味着如果您在阻塞中运行一段代码,则在代码结束之前不会执行其他任何操作,包括渲染。
这种设计有时会导致一些问题:如果开发人员在一个阻塞函数中添加了太多工作,播放器就会立即冻结并且无响应。 (如果代码是一个无限循环,它会停止,直到玩家检测并抛出ScriptTimeoutError,或者可能会永远丢失。)
但是,对于您的问题,是的,任何事情都会延迟,直到添加作业完成。 Flex组件基本上不会自动分割作业。
Flex组件根据Flex的生命周期呈现在列表中:http://help.adobe.com/en_US/flex/using/WS460ee381960520ad-2811830c121e9107ecb-7fff.html
有两个原因您的列表可能会运行缓慢,您的组件可能不会从Flex的生命周期正确,第二是因为虚拟布局未在列表中启用。
首先在硬盘之一:
你的第一步应该是,以确保您按照您的自定义组件的正确阶段为commitProperties()
,measure()
和updateDisplayList(unscaledWidth:Number, unscaledHeight:Number)
。
只要你没有在你的UIComponent子类或LayoutManager上调用任何名为validateNow()
的方法,那么你的组件应该很好。
第二个可能是您的列表布局不使用虚拟布局。这在Spark List组件中是默认启用的,但是如果您覆盖了布局,则应确保在您使用的任何布局上useVirtualLayout
设置为true。
这是什么,它对加快火花DATAGROUP组件渲染许多项目(该清单): http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-1483ec4a12136246e76-8000.html#WS685c4ccbb85d340c6617851e121d4b8abae-8000