我正在使用大型Flex应用程序,我注意到我们最大的组件之一(有很多子画布)在initialize和creationComplete事件之间大约需要6秒。我一直在做一些阅读,发现有很多嵌套的画布会导致减速,但我不确定这是否会减速?任何人都有任何关于加快速度的建议,甚至没有确切地确定减速的来源?
答案 0 :(得分:2)
根据我的经验,具有动态尺寸的嵌套容器是这些类型滞后的最常见原因。有些事要尝试:
尽可能为容器/组件设置明确的尺寸/位置。这减少了在创建过程中框架内发生的令人难以置信的测量量。
减少嵌套容器的数量。听起来很明显,但是当你开始批判性地设置用户界面时,你可以减少多少。具体来说,您是否可以通过简单地为子组件设置显式位置/大小来摆脱HBox和VBox容器?你真的需要使用Form容器吗?
将容器切换到重量轻得多的Spark Group,而不是尽可能使用较重的Canvas。
希望有所帮助。如果没有,请发布一些代码,以便我们深入了解您的具体问题。
答案 1 :(得分:1)
要考虑的最重要的事情是使用VBox和/或HBox代替一些动态生成的x和y。 VBox和HBox效率更高。看看吧!
答案 2 :(得分:1)
一次性将多个显示对象添加到显示列表可能需要很长时间,尤其是当我们讨论混合中具有布局和滚动逻辑的Flex容器时。既然你说你正在使用许多Canvas容器,那肯定是你遇到的问题。
我知道很多开发者滥用creationPolicy
属性。通常,它设置为"auto"
,允许Flex将容器子项的实例化推迟到“稍后”的非常短的时间。通常,在下一帧之前,你甚至都看不出差异。您是否碰巧在该层次结构中的任何位置将creationPolicy
设置为"all"
?这可能会迫使画布及其子女立即被创作。