Apache flex 是否必须在ItemRenderer上的createChildren函数上创建所有子对象?

Apache flex 是否必须在ItemRenderer上的createChildren函数上创建所有子对象?,apache-flex,actionscript-3,itemrenderer,Apache Flex,Actionscript 3,Itemrenderer,我是否需要在CreateChildrender函数中创建我可能与itemRenderer一起使用的所有对象,即使当前项目不能显示其中的一些对象?简短回答:否。您可以随时创建子对象 详细回答:最好在您当前使用的框架内工作。Flex有一个方法invalidateChildren(或类似的东西)。在您需要显示新对象之前,您应该考虑调用它,然后在下一次调用CaleTeaScript中构建新对象。 当然,有时情况需要偏差,但我无法知道这是否属于此类情况。createChildren()用于创建在主机组件的

我是否需要在CreateChildrender函数中创建我可能与itemRenderer一起使用的所有对象,即使当前项目不能显示其中的一些对象?

简短回答:否。您可以随时创建子对象
详细回答:最好在您当前使用的框架内工作。Flex有一个方法invalidateChildren(或类似的东西)。在您需要显示新对象之前,您应该考虑调用它,然后在下一次调用CaleTeaScript中构建新对象。 当然,有时情况需要偏差,但我无法知道这是否属于此类情况。

createChildren()
用于创建在主机组件的整个生命周期中都存在的子组件。这些子项及其计数是不可变的,就像按钮的标签或边框容器的边框一样


要创建或删除动态子项,最好使用
commitProperties()
updateDisplayList()
。后者更可取,因为您可以创建/删除动态子项,并在一段代码中执行它们的定位。

谢谢您的回答,您能将我链接到一些示例以了解如何使用此方法吗?@Yordan我想@cwallenpole遗漏了一些东西,因为此方法在
UIComponent
Container
中都不存在。此外,createChildren()在组件生命周期中只调用一次。永远不会有“下一个调用”(除非您自己在子类中进行,但我当然不建议这样做)。我无法理解为什么这个答案会导致3票以上的选票。它不值得3票以上的选票,尽管简短的答案是中肯的。太糟糕了,长长的答案到处都是废话。顺便说一句,仅仅因为你可以随时创建子对象并不意味着你应该。谢谢:)-我从来没有想过我应该/可以在那里创建子对象。但总的来说,哪一个是最佳实践呢?我在上面描述了最佳实践
CreateChildren()
用于标签、边框、按钮等“固定”子项,
updateDisplayList()
用于动态子项(数据提供程序等提供的一组按钮)。-1用于推荐updateDisplayList()和commitProperties()作为最佳实践。在updateDisplayList中使用addChild实际上被认为是不好的做法,主要是因为addChild导致调用invalidateDisplayList。它还会导致调用invalidateProperties,因此也不鼓励在commitProperties中使用它。@bug-a-lot:嘿,伙计,你仔细回答和评论了吗?在本次讨论中,您在什么地方提到了
addChild
?添加/删除动态子项(我指的是一些依赖数据的子项,我们无法预测它们的数量和生命周期)的最佳位置是什么?@Constantiner当你说“创建动态子项”时,假设是在实例化子项后,你也会将其添加到组件中,否则有什么意义?至于添加/删除动态子对象的最佳位置,这是非常有情境性的,而不是OP真正想要的。我只知道updateDisplayList不是到目前为止最好的地方,尽管它对程序员来说是一个非常方便的地方。同样,从一开始实例化所有的子项,并在需要时添加它们也会很方便。但便利并不是推动最佳实践的因素。