首页 | 博客群 | 公社 | 专栏 | 论坛 | 图片 | 资讯 | 注册 | 帮助 | 博客联播 | 随机访问
使用RSL来减小Flex生成的SWF文件的大小- -| 回首页 | 2007年索引 | - -Flex编程小技巧集锦

在Flex 2.0.1中使用动态CSS

关键词FLEX动态CSS                                          

Flex 2.0.1 的特性之一就是可以动态加载CSS文件。这就使得你的程序在只有一个SWF文件的情况下有多个不同的外观。换句话说,就是不需要多个SWF来对应多个CSS文件。

示例

这里有一个简单的例子。创建一个Flex程序,其中有一个Panel控件,Panel中有一个Label和一个Button。然后创建两个CSS文件:

red_styles.css:

程序代码 程序代码
Panel {
    background-color: #600000;
    border-color: red;
    color: white:
}


green_styles.css:

程序代码 程序代码
Panel {
    background-color: #006000;
    border-color: green;
    color: white;
}


在主程序中,加入以下代码:

    
程序代码 程序代码
import mx.styles.StyleManager;

    private function loadStyles( name:String ) : void
    {
        StyleManager.loadStyleDeclarations( name );
    }


将下面两个RadioButton放到程序中Panel外的某个地方:

    
程序代码 程序代码
<mx:RadioButton label="Red" click="loadStyles('red_styles.swf')" />
    <mx:RadioButton label="Green" click="loadStyles('green_styles.swf')" />


注意“red” RadioButton想要使用red_styles.swf而“green” RadioButton想要使用green_styles.swf。你需要将CSS文件编译到SWF中。你可以使用下面两种方法的一种:

如果你正在使用Flex Builder 2.0.1,右键点击CCS文件并选择“Compile CSS to SWF”选项。或者你也可以使用mxmlc来将CSS文件编译到SWF文件中。

现在运行程序。当你点击“Red”按钮时Panel将会变成红色,点击“Green”按钮的时候Panel将会变成绿色。很酷,对吧?

在程序中使用动态CSS

如果你想要在程序中使用动态CSS,例如在Application标签中添加 initialize="loadStyles('red_styles.css')" ,你会发现在加载新的CSS来替换缺省CSS的时候会闪一下。

你可以避免CCS替换时发生的闪烁,只需遵循以下步骤:

首先,在Application标签中添加 visible="false"。

然后,覆写styleChanged 函数:

        
程序代码 程序代码
private var stylesAreGood:Boolean = false;
        
        override public function styleChanged(styleProp:String):void
        {
            super.styleChanged(styleProp);
            stylesAreGood = true;
        }


更改loadStyles函数将stylesAreGood设成false:

        
程序代码 程序代码
private function loadStyles( name:String ) : void
        {
            StyleManager.loadStyleDeclarations(name);
            stylesAreGood = false;
        }


然后添加下面的函数:

        
程序代码 程序代码
private function showApp() : void
        {
            if( stylesAreGood ) {
                visible = true;
            }
        }


最后在Application标签中的updateComplete事件调用showApp函数:

        
程序代码 程序代码
updateComplete="showApp()"


以上步骤做的是下面这些事情:

【作者: 轻风】【访问统计:】【2007年04月22日 星期日 22:16】【注册】【打印

搜索

Google

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=6237987

回复

验证码:   
评论内容: