【Flex】解决Flex预加载配置文件问题
? 在工作上碰到一个比较棘手的问题,项目有需要用到配置文件,此文件主要用于版本控制。刚开始的时候用Application的createComplete方法去读取此文件,但由于Flex的初始化过程是先初始化子组件,再初始化父组件。所以如果Application的子组件用到版本信息时,获取的都是null,原因就是还没有读取此文件。 ? 项目中提供了一个解决方案,就是绑定。无论是否已经加载配置文件,先给子组件用的信息的组件绑定值,再把此值暴露给Application,组件先初始化,取到的是空值。再Application调用createComplete,读取配置文件并改变绑定值,说白了其实就是通过值绑定再次改变子组件值。 ? 显而易见的上面的解决方案很明显是一个治标不治本的方案。局限性比较大,并且后期可扩展性非常差。 ? 最后还是回到起点,能不能再任何子组件都没初始化直接先加载配置文件呢? ? 经过思考和组件重写的启发。 ? 重写一个组件系统依次调用Constructor(构造方法)-->createChildren()-->commitProperties()==>measure()==>updateDisplayList() ; ?a,Constructor构造方法,初始化属性,默认值 在这个方法中使用最好。 ?所以我选择了重写Application的createChildren()方法,在还没有创建子组件之前,先加载配置文件,问题就解决了。 ? override protected function createChildren():void { //在此加载配置文件 super.createChildren(); }?花了一上午 flex还是不太熟啊 主要是纠结Application preload了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |