9.6.运行时加载CSS

9.6.1.问题
你想通过运行时加载CSS 文件替代在编译时嵌入它们的方法,从而尽量保持你的SWF 的大小。
9.6.2.解决办法
用Flex 3 SDK 提供的mxmlc 工具将你的CSS 文件打包, 然后利用mx.styles.StyleManager在运行时加载CSS 文件。
9.6.3.讨论
编译时加载样式使你不需重新编译程序即可改变样式定义。若要在运行时加载SWF,你需要使用StyleManager 的loadStyleDeclarations 方法。

与载入CSS 文件相反, StyleManager 加载样式SWF 。若要创造SWF, 可利用Flex SDK中mxmlc 命令行工具将CSS 文件编译成SWF 文件. 首先,第一步创作以.css 结尾的文件并添加如下声明:
+展开
-CSS
VBox {
backgroundColor: #CCCCCC;
verticalAlign: 'middle';
horizontalAlign: 'center';
}

.header {
font-family: 'Arial';
font-size: 15px;
font-weight: 'bold';
color: #FFFFFF;
}

将CSS 文件保存为MyStyles.css,打开一个命令提示符。在你的系统路径中Flex 安装目录/bin 文件夹下, 提示符后输入以下命令后点击回车:
> mxmlc MyStyles.css
本命令将创造出与提供的CSS 文件同名的SWF 文件。本例中, MyStyles.swf 会出现在你调用编译器时所指向的目录。

若要加载样式SWF 并应用于实例组件,你需要调用StyleManager 的loadStyleDeclarations同时将update 参数设置为true:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
creationComplete="appComplete();">
<mx:Script>
<![CDATA[
// load external style SWF and force update to display.
private function appComplete():void {
StyleManager.loadStyleDeclarations( "assets/styles/MyStyles.swf",
true
);
}
]]>
</mx:Script>
<mx:VBox id="holder" width="200" height="200">
<mx:Label id="labelField" text="Hello Flex!"
styleName="header" />
</mx:VBox>
</mx:Application>
在程序创作完成和编译的样式SWF 文件成功加载的基础上,CSS 文件中定义的声明应用
于组件。作为选择, 你可以通过给IEventDispatcher 实例定义事件监听器来记录加载样式
SWF 的过程、成功与错误,这些实例是由loadStyleDeclarations 方法返回的:
+展开
-ActionScript
private function appComplete():void
{
// listen to the complete event of external style SWF load
var
dispatcher:IEventDispatcher =
StyleManager.loadStyleDeclarations("assets/styles/MyStyles.swf"true);
dispatcher.addEventListener( StyleEvent.COMPLETE,styleCompleteHandler );
}
private function styleCompleteHandler( evt:StyleEvent ):void {
trace( "Styles Loaded!");
}

如果你选择使用loadStyleDeclarations 返回的IEventDispatcher 实例来监视样式SWF 的加载过程, 你可将update 参数设为false 同时编程将样式属性应用于组件正如你在定义的事件处理器中装配好。

当你利用<mx:Style>标记的source 属性在编译时指派外部CSS 文件时,编译器会中断并检查那个文件是否存在。当利用StyleManager 在运行时加载样式SWF,那项中断不执行,允许你为你的程序在任何时候创造文件,无论你的程序发布与否。

加支付宝好友偷能量挖...


评论(0)网络
阅读(180)喜欢(0)flash/flex/fcs/AIR