我知道在Flex中有很多关于同步性的问题,但我不确定是否有任何问题涉及我所遇到的同一问题。标题只是指我一直想要的一个可能的解决方案,但基本上就是我的情况:
假设我有一个Flex应用程序,并且我有一个XML文件,其中包含我希望加载到该应用程序中的配置设置,最好是在运行时(虽然我也可以在编译时很好但是找不到一种方法,因为“-define”命令行参数只会实例化字符串,数字和布尔值,我有一些更复杂的配置结构 - 我也不能仅仅在Flex中创建这些常量,因为它们被使用在许多其他地方)。
但是,其中一些配置设置在加载时也会在应用程序的各个子项中使用,因此在加载这些容器之前无法执行和完成加载(由于异步性 - 这些子项在加载时会被加载仍然正在使用事件侦听器和处理程序加载和解析配置;当然,在处理程序完成之前,子组件已经被错误地加载了)。
有没有办法让这个配置文件在应用程序的孩子之前加载?甚至在应用程序本身之前?这种同步应用程序负载的方法只是一种可能的方法,但没有其他方法似乎更好。
答案 0 :(得分:1)
我有一个'shell'应用程序,它的MXML中没有声明任何UI子代。在其creationComplete处理程序上,我加载了我的配置文件。一旦load事件完成,我在Actionscript中实例化我的孩子。
答案 1 :(得分:0)
如果用户看不到那些“孩子”,则可以推迟初始化。 因此,在加载配置后,触发一个事件,然后触发子项的初始化。这不会影响用户的感知。
答案 2 :(得分:0)
与Mike建议的相似,你需要做的就是拥有一个带有creationPolicy =“none”的Container(Canvas,VBox等);当您准备初始化应用程序时,可以在Container上调用createComponentsFromDescriptors()。
另一种方法是将该内容放入模块并在加载配置后加载它。