最近在开发Flex的时候,由于应用比较大,Flex就像一个cs端的应用,一切状态改变都需要在mx:Application 主文件中做this.currentState="childMxml";来改变界面视图。有时在this.currentState="chidMxml"之前就需要从java、php、.net后台查询出一批结果集,而不能你先显示你空白页,等待提取数据 。一般来说数据量不大先提取数据再view显示出来会比较好,体验会更好一些,mxml的生命周期分下面:
- preinitialize 当组件在创建的原始阶段触发,它的子元素都还没有创建,也就是这时候不能引用mxml中的组件(如果一个页面从来没有被显示过,或没有隐式加载在舞台上时,此事件是第一个执行。反之则不会运行)
- initialize 当组件及其子元素都已经创建完毕的时候触发,但此时组件的大小尺寸还没有决定,但这时候可以引用mxml中的组件( 如果一个页面从来没有被显示过,或没有隐式加载在舞台上时,此事件是第二个执行。反之则不会运行)
- creationComplete 当组件布局完成并显示之后触发(页面被显示出以后再执行,this.currentState执行视图切换后,再执行。 )
因此,我们一般在initialize的时候,可以对组件上要显示的字符信息等进行设置和设置和组件尺寸相关的值。而要获取和组件布局相关的信息的操作,则放在creationComplete时。