天天看点

积少成多Flash(9) - Flex 3.0 布局控件, 样式(css), 皮肤(skin)

<a href="http://webabcd.blog.51cto.com/1787395/342175" target="_blank">[索引页]</a>

<a href="http://down.51cto.com/data/100162" target="_blank">[源码下载]</a>

积少成多Flash(9) - Flex 3.0 布局控件, 样式(css), 皮肤(skin)

介绍

演示 Flex 3.0 中的布局控件的应用,样式和皮肤的应用 

布局控件 - Flex 中常用的布局控件一览

样式 - 通过 css 控制 Flex 中各个控件的样式

皮肤 - 使用 Flash 开发的 swf 做控件的皮肤

在线DEMO

1、布局控件一览

Layout.mxml

&lt;?xml version="1.0" encoding="utf-8"?&gt; 

&lt;mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"    

        title="Layout 常用布局控件一览" width="476" height="427"&gt; 

        &lt;mx:Script&gt; 

                &lt;![CDATA[ 

                        import mx.controls.Alert; 

                        private function submitForm(e:MouseEvent):void 

                        { 

                                Alert.show("Item1: " + item1.text, "Alert框"); 

                        } 

                ]]&gt; 

        &lt;/mx:Script&gt; 

        &lt;!-- 

                HBox - 水平线性布局 

                VBox - 垂直线性布局 

        --&gt; 

        &lt;mx:HBox x="10" y="10" width="438" horizontalGap="50" borderThickness="1" borderStyle="solid"&gt; 

                &lt;mx:Label text="HBox - Label1"/&gt; 

                &lt;mx:Label text="HBox - Label2"/&gt; 

        &lt;/mx:HBox&gt; 

                HDividedBox - 在 HBox 的基础上,以垂直方向显示分隔条 

                VDividedBox - 在 VBox 的基础上,以水平方向显示分隔条 

        &lt;mx:HDividedBox x="10" y="36" width="438" borderThickness="1" borderStyle="solid"&gt; 

                &lt;mx:Label text="HDividedBox - Label1"/&gt; 

                &lt;mx:Label text="HDividedBox - Label2"/&gt; 

        &lt;/mx:HDividedBox&gt; 

                Panel - 面板。可设置其标题,内容等 

        &lt;mx:Panel width="171" height="97" layout="absolute" title="Panel - Title" x="10" y="64" borderThickness="1" borderStyle="solid"&gt; 

                &lt;mx:Label text="Panel - Label1"/&gt; 

        &lt;/mx:Panel&gt; 

                Grid - 网格型布局控件 

        &lt;mx:Grid x="10" y="169" borderThickness="1" borderStyle="solid"&gt; 

                &lt;mx:GridRow width="100%" height="100%"&gt; 

                        &lt;mx:GridItem width="100%" height="100%"&gt; 

                                &lt;mx:Label text="Grid - Label1"/&gt; 

                        &lt;/mx:GridItem&gt; 

                                &lt;mx:Label text="Grid - Label2"/&gt; 

                &lt;/mx:GridRow&gt; 

                        &lt;mx:GridItem width="100%" height="100%" colSpan="2" horizontalAlign="center"&gt; 

                                &lt;mx:Label text="Grid - Label3"/&gt; 

        &lt;/mx:Grid&gt; 

                Form - 用于构建表单型布局 

        &lt;mx:Form x="189" y="64" width="259" height="149" borderThickness="1" borderStyle="solid"&gt; 

                &lt;mx:FormHeading label="Form - Head"/&gt; 

                &lt;mx:FormItem label="Item1: "&gt; 

                        &lt;mx:TextInput id="item1" /&gt;         

                &lt;/mx:FormItem&gt; 

                &lt;mx:FormItem&gt; 

                        &lt;mx:HRule height="1" width="100%" /&gt; 

                        &lt;mx:Button label="Form - Submit" click="submitForm(event)" /&gt; 

        &lt;/mx:Form&gt; 

                Canvas - 绝对定位布局控件 

        &lt;mx:Canvas width="438" height="84" x="10" y="221" borderThickness="1" borderStyle="solid"&gt; 

                &lt;mx:Label text="Canvas - Label1"/&gt; 

                &lt;mx:Label text="Canvas - Label2" x="104" y="10"/&gt; 

                &lt;mx:Label text="Canvas - Label3" x="208" y="20"/&gt; 

        &lt;/mx:Canvas&gt; 

                ApplicationControlBar - 显示为一个条形控件 

        &lt;mx:ApplicationControlBar x="10" y="313" width="436"&gt; 

                &lt;mx:Label text="ApplicationControlBar - Label1"/&gt; 

        &lt;/mx:ApplicationControlBar&gt; 

                ControlBar - Panel 底部的条形控件 

                Spacer - 不用于显示,纯粹占位用 

        &lt;mx:ControlBar&gt; 

                &lt;mx:Label text="Panel - ControlBar - Label1"/&gt; 

                &lt;mx:Spacer width="100%" x="154" y="350"/&gt; 

                &lt;mx:Label text="Panel - ControlBar - Label2"/&gt; 

        &lt;/mx:ControlBar&gt; 

&lt;/mx:Panel&gt;

2、样式的控制

样式

/*    

* Flex 也支持 CSS 中的类型选择符 

* 此种类型选择符必须设置在外部,然后由具体的 mxml 引用,直接将其写在 &lt;mx:Style /&gt; 中无效 

*/ 

Application 

        font-size: 12px; 

}

引用样式

&lt;mx:Style source="style.css" /&gt;

css.mxml(Flex 中样式相关的演示)

&lt;mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" 

        initialize="init();" 

        title="CSS 的应用"&gt; 

                        // 重写已声明的样式 

                        // 其中样式 “italic” 已在 &lt;mx:Style /&gt; 中做了声明 

                        private function init():void 

                                var css:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".italic"); 

                                css.setStyle("fontStyle", "italic"); 

                        // 以编程方式指定样式 

                        private function setTextInputStyle():void 

                                txt.setStyle("color", "Red"); 

        &lt;mx:Style&gt; 

                /* 在 Flex 中的做样式设置,基本与 CSS 相同 */ 

                .red    

                {    

                        color: red; 

                } 

                .bold 

                { 

                        font-weight: bold; 

                .italic 

                .myClass 

                        /* 使用内嵌图片做背景 */ 

                        background-image:Embed("images/logo.png"); 

        &lt;/mx:Style&gt;                

        &lt;!--以声明方式指定样式(可以一次指定多个样式)--&gt; 

        &lt;mx:Label text="Label" x="10" y="10" styleName="red bold italic" /&gt; 

        &lt;!--以编程方式指定样式--&gt; 

            &lt;mx:TextInput id="txt" text="TextInput" x="10" y="36" initialize="setTextInputStyle();" /&gt; 

        &lt;mx:VBox styleName="myClass" x="10" y="85"&gt; 

                &lt;mx:Label text="Label" color="yellow" fontSize="30" /&gt; 

        &lt;/mx:VBox&gt;        

3、皮肤的使用

customButton.css

Button.customButton 

        /* 

         * 如果要在运行时加载 skin 需要将其编译为 swf(在 .css 文件中单击右键,选择 Compile CSS to SWF) 

         * 自定义皮肤:在 Flash 中要选择为 ActionScript 导出,在 Flash 中编辑皮肤时,要启用9切片(放大/缩小时边缘不会变形,也就是说边缘不随放大/缩小而变化) 

         * 此处指定的 style/skin.swf 为在 Flash 中编辑的皮肤 

         */ 

        upSkin: Embed(source="style/skin.swf", symbol="Button_upSkin"); 

Skin.mxml

        title="Skin 的应用"&gt; 

        &lt;mx:Script&gt;    

                        // 应用自定义皮肤 

                        private function changeSkin():void 

                                StyleManager.loadStyleDeclarations("style/customButton.swf"); 

                                btn.styleName = "customButton" 

        &lt;mx:Style source="style/customButton.css" /&gt; 

        &lt;mx:Button id="btn" label="换皮" click="changeSkin();" /&gt; 

4、ToolTip 的样式的控制

style.css

ToolTip    

        fontSize: 12; 

        fontStyle: "italic"; 

        color: #000000; 

        backgroundColor: #FCEA1E; 

ToolTipDemo.mxml

        title="ToolTip 的 Demo"&gt; 

        &lt;mx:Style source="style.css" /&gt; 

        &lt;mx:TextInput toolTip="我是 TookTip" x="10" y="10"/&gt; 

OK

     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/342227,如需转载请自行联系原作者