使用parseCSS动态加载CSS

大家都知道,从Flex 2.01开始,我们就可以在运行时使用loadStyleDeclarations()方法动态加载编译成SWF的CSS。该方法不用重新编译Flex主程序,这已经是很大的一个进步了。然而很多对Flex认识的朋友总喜欢拿Flex与HTML来对比。说什么HTML与外部的CSS是完全分离的,在外部修改CSS后,是不用重新编译HTML的样式也会生效。Flex 能做到这一点吗?

答案是否定的。至少对于复杂的CSS,想动态加载而不用重新编译CSS成SWF是行不通的,而且这种做会消耗掉大量的性能,不可取。

记得在AS2.0,parseCSS方法就能解析加载CSS。当然,我们在Flex中也可以该方法动态加载CSS。

点击此处查看本实例的效果,点击此处下载本实例的源码。

修改一下CSS中已声明的样式对象值,你会发现确实不用重新编译CSS也能生效。那我为什么还说NO呢?其实多实验一下就知道了,比如说,在CSS中,声明一个Button类型选择器,再添加一些新的样式属性,结果会没有任何效果。这是因为parseCSS在解析CSS时会将每一个选择器名小写,因此“Button”就解析成了“button”。

总之,parseCSS只适合完全小写的类选择器。如果要动态加载嵌入图片Skin等复杂样式时,是一定要重新编译CSS的。

发表评论