【1】 setStyle()使用的注意事项:
1.setStyle()方法尽量不要使用,不要在第一次使用;
2.第一次使用样式时,尽量设置在<fx:Style>,外部样式表中。
3.如果必须使用setStyle()方法,要在实例化的时候就调用,这时setStyle()方法发生在preinitialize时。
【2】运行时加载样式表
运行时加载样式分为三步:
1.写css样式文件
2.把css文件编译为swf文件
3.在应用程序中调用 StyleManager.loadStyleDeclarations()。
例子:
第一步:写css样式文件
/* assets/BasicStyle.css*/
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/halo";
s|Button {
fontSize: 24;
color: #FF9933;
}
s|Label {
fontSize: 24;
color: #FF9933;
}
第二步:编译css文件
在BasicStyle.css右键选择【将CSS编译为SWF文件】
第三步:在preinitialize()事件中initApp()
<fx:Script>
<![CDATA[
public function initApp():void{
styleManager.loadStyleDeclarations("assets/BasicStyles.swf");
}
]]>
</fx:Script>
<s:Button label="thisisisis"/>
<s:Label text="thank you for your letter"/>
知识补充
loadStyleDeclarations()方法返回的是一个IEventDispatcher类的实例,所以我们可以使用返回的对象来触发事件,我们可以使用的事件包括:
StyleEvent.PROGRESS,StyleEvent.COMPLETE, StyleEvent.ERROR
下面是一个简单的例子,虽然其并没有什么意义:【BasicLayout.swf用的依旧是上面的文件】
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.events.StyleEvent;
public function initApp():void{
var myEvent:IEventDispatcher=styleManager.loadStyleDeclarations("assets/BasicStyles.swf");
myEvent.addEventListener(StyleEvent.COMPLETE,getImageEventHandler);
}
private function getImageEventHandler(event:StyleEvent):void{
map1.source="assets/bg.jpg";
}
]]>
</fx:Script>
<mx:Image id="map1"/>
<s:Button label="thisisisis"/>
<s:Label text="thank you for your letter"/>