加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【Flex】解决Flex预加载配置文件问题

发布时间:2020-12-15 04:38:00 所属栏目:百科 来源:网络整理
导读:? 在工作上碰到一个比较棘手的问题,项目有需要用到配置文件,此文件主要用于版本控制。刚开始的时候用Application的createComplete方法去读取此文件,但由于Flex的初始化过程是先初始化子组件,再初始化父组件。所以如果Application的子组件用到版本信息时

? 在工作上碰到一个比较棘手的问题,项目有需要用到配置文件,此文件主要用于版本控制。刚开始的时候用Application的createComplete方法去读取此文件,但由于Flex的初始化过程是先初始化子组件,再初始化父组件。所以如果Application的子组件用到版本信息时,获取的都是null,原因就是还没有读取此文件。

? 项目中提供了一个解决方案,就是绑定。无论是否已经加载配置文件,先给子组件用的信息的组件绑定值,再把此值暴露给Application,组件先初始化,取到的是空值。再Application调用createComplete,读取配置文件并改变绑定值,说白了其实就是通过值绑定再次改变子组件值。

? 显而易见的上面的解决方案很明显是一个治标不治本的方案。局限性比较大,并且后期可扩展性非常差。

? 最后还是回到起点,能不能再任何子组件都没初始化直接先加载配置文件呢?

? 经过思考和组件重写的启发。

? 重写一个组件系统依次调用Constructor(构造方法)-->createChildren()-->commitProperties()==>measure()==>updateDisplayList() ;

?a,Constructor构造方法,初始化属性,默认值 在这个方法中使用最好。
?b,createChildren() 创建子对象,在组件中添加子对象。是使用addChild方法添加子对象
?c,commitProperties 用在处理属性值和更新。(多个属性值更新后统一处理入口和单值多次修改后处理入口)
?d,measure()设置组件的默认大小(以便Flex布局管理器能正确知道该组件的大小,给其分配适当空间)
?e,updateDisplayList()用来重绘组件,子对象布局逻辑等

?所以我选择了重写Application的createChildren()方法,在还没有创建子组件之前,先加载配置文件,问题就解决了。

?

override protected function createChildren():void {
//在此加载配置文件
super.createChildren();
}
?花了一上午 flex还是不太熟啊 主要是纠结Application preload了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读