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

  在工作上碰到一个比较棘手的问题,项目有需要用到配置文件,此文件主要用于版本控制。刚开始的时候用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了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zfpigpig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值