繁体   English   中英

Flex Spark List项目呈现延迟刷新

[英]Flex Spark List item render with delayed refresh

我有一个Spark列表,我在其中手动添加自定义组件(没有项呈示器)。 一切都工作正常,除非我在列表中添加数百个项目(基于几个计算),渲染时间增加到几秒钟。

我的问题是:

  1. flex是否会自动延迟添加到列表中的组件的再现?
  2. 如果没有,那么我怎么能告诉火花列表只在添加所有内容后渲染组件。

我希望我所要求的是有道理的。 我很确定渲染时间在增加,因为我在自定义组件中有很多组件。 我只需要简单回答我的问题。

Flex组件根据Flex生命周期呈现在列表中: http//help.adobe.com/en_US/flex/using/WS460ee381960520ad-2811830c121e9107ecb-7fff.html

您的List可能运行缓慢有两个原因,您的组件可能无法正确遵循Flex生命周期,第二个原因是您的列表上未启用虚拟布局。

首先是艰难的一个:

您的第一步应该是确保您在自定义组件中遵循commitProperties()measure()updateDisplayList(unscaledWidth:Number, unscaledHeight:Number)的正确阶段。

只要你没有在你的UIComponent子类或LayoutManager上调用任何名为validateNow()的方法,那么你的组件应该遵循这个就好了。

第二个可能是您的列表布局没有使用虚拟布局。 默认情况下,这在Spark List组件中启用,但如果要覆盖布局,则应确保在您使用的任何布局上将useVirtualLayout设置为true。

这是启用它的属性: http//help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/components/List.html#useVirtualLayout

这就是它加速渲染Spark DataGroup组件(列表所在)中的许多项目所做的工作: http//help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-1483ec4a12136246e76-8000.html#WS685c4ccbb85d340c6617851e121d4b8abae-8000

还有一件事要知道,

ActionScript 3基于偶数驱动在Flash播放器上运行。 这意味着如果您在阻塞中运行一大块代码,则在代码结束之前不会执行任何其他操作(包括呈现)。

此设计有时会导致问题:如果开发人员在一个阻止功能中添加了太多工作,则玩家会暂时冻结并且无响应。 (如果代码是无限循环,它将停止,直到玩家检测到并抛出ScriptTimeoutError,或者可能永远。)

但是,对于您的问题,是的,在添加作业完成之前,任何内容都会延迟。 Flex组件基本上不会自动拆分作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM