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

简介:



[索引页]

[源码下载]


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


作者: webabcd


介绍
演示 Flex 3.0 中的布局控件的应用,样式和皮肤的应用 
  • 布局控件 - Flex 中常用的布局控件一览
  • 样式 - 通过 css 控制 Flex 中各个控件的样式
  • 皮肤 - 使用 Flash 开发的 swf 做控件的皮肤


在线DEMO
http://www.cnblogs.com/webabcd/archive/2009/11/09/1598980.html 


1、布局控件一览
Layout.mxml
<?xml version="1.0" encoding="utf-8"?> 
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"    
        title="Layout 常用布局控件一览" width="476" height="427"> 
         
        <mx:Script> 
                <![CDATA[ 
                 
                        import mx.controls.Alert; 
                         
                        private function submitForm(e:MouseEvent):void 
                        { 
                                Alert.show("Item1: " + item1.text, "Alert框"); 
                        } 
                         
                ]]> 
        </mx:Script> 
         
        <!-- 
                HBox - 水平线性布局 
                VBox - 垂直线性布局 
        --> 
        <mx:HBox x="10" y="10" width="438" horizontalGap="50" borderThickness="1" borderStyle="solid"> 
                <mx:Label text="HBox - Label1"/> 
                <mx:Label text="HBox - Label2"/> 
        </mx:HBox> 
         
        <!-- 
                HDividedBox - 在 HBox 的基础上,以垂直方向显示分隔条 
                VDividedBox - 在 VBox 的基础上,以水平方向显示分隔条 
        --> 
        <mx:HDividedBox x="10" y="36" width="438" borderThickness="1" borderStyle="solid"> 
                <mx:Label text="HDividedBox - Label1"/> 
                <mx:Label text="HDividedBox - Label2"/> 
        </mx:HDividedBox> 
         
        <!-- 
                Panel - 面板。可设置其标题,内容等 
        --> 
        <mx:Panel width="171" height="97" layout="absolute" title="Panel - Title" x="10" y="64" borderThickness="1" borderStyle="solid"> 
                <mx:Label text="Panel - Label1"/> 
        </mx:Panel> 
         
        <!-- 
                Grid - 网格型布局控件 
        --> 
        <mx:Grid x="10" y="169" borderThickness="1" borderStyle="solid"> 
                <mx:GridRow width="100%" height="100%"> 
                        <mx:GridItem width="100%" height="100%"> 
                                <mx:Label text="Grid - Label1"/> 
                        </mx:GridItem> 
                        <mx:GridItem width="100%" height="100%"> 
                                <mx:Label text="Grid - Label2"/> 
                        </mx:GridItem> 
                </mx:GridRow> 
                <mx:GridRow width="100%" height="100%"> 
                        <mx:GridItem width="100%" height="100%" colSpan="2" horizontalAlign="center"> 
                                <mx:Label text="Grid - Label3"/> 
                        </mx:GridItem> 
                </mx:GridRow> 
        </mx:Grid> 
         
        <!-- 
                Form - 用于构建表单型布局 
        --> 
        <mx:Form x="189" y="64" width="259" height="149" borderThickness="1" borderStyle="solid"> 
                <mx:FormHeading label="Form - Head"/> 
                <mx:FormItem label="Item1: "> 
                        <mx:TextInput id="item1" />         
                </mx:FormItem> 
                <mx:FormItem> 
                        <mx:HRule height="1" width="100%" /> 
                        <mx:Button label="Form - Submit" click="submitForm(event)" /> 
                </mx:FormItem> 
        </mx:Form> 
         
        <!-- 
                Canvas - 绝对定位布局控件 
        --> 
        <mx:Canvas width="438" height="84" x="10" y="221" borderThickness="1" borderStyle="solid"> 
                <mx:Label text="Canvas - Label1"/> 
                <mx:Label text="Canvas - Label2" x="104" y="10"/> 
                <mx:Label text="Canvas - Label3" x="208" y="20"/> 
        </mx:Canvas> 
         
        <!-- 
                ApplicationControlBar - 显示为一个条形控件 
        --> 
        <mx:ApplicationControlBar x="10" y="313" width="436"> 
                <mx:Label text="ApplicationControlBar - Label1"/> 
        </mx:ApplicationControlBar> 
                 
        <!-- 
                ControlBar - Panel 底部的条形控件 
                Spacer - 不用于显示,纯粹占位用 
        --> 
        <mx:ControlBar> 
                <mx:Label text="Panel - ControlBar - Label1"/> 
                <mx:Spacer width="100%" x="154" y="350"/> 
                <mx:Label text="Panel - ControlBar - Label2"/> 
        </mx:ControlBar> 
</mx:Panel>
 
 
2、样式的控制
样式
/*    
* Flex 也支持 CSS 中的类型选择符 
* 此种类型选择符必须设置在外部,然后由具体的 mxml 引用,直接将其写在 <mx:Style /> 中无效 
*/ 
Application 

        font-size: 12px; 
}
 
引用样式
<mx:Style source="style.css" />
 
css.mxml(Flex 中样式相关的演示)
<?xml version="1.0" encoding="utf-8"?> 
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" 
        initialize="init();" 
        title="CSS 的应用"> 
         
        <mx:Script> 
                <![CDATA[ 
         
                        // 重写已声明的样式 
                        // 其中样式 “italic” 已在 <mx:Style /> 中做了声明 
                        private function init():void 
                        { 
                                var css:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".italic"); 
                                css.setStyle("fontStyle", "italic"); 
                        } 
                         
                        // 以编程方式指定样式 
                        private function setTextInputStyle():void 
                        { 
                                txt.setStyle("color", "Red"); 
                        } 
                         
                ]]> 
        </mx:Script> 
         
        <mx:Style> 
                /* 在 Flex 中的做样式设置,基本与 CSS 相同 */ 
                 
                .red    
                {    
                        color: red; 
                } 
                .bold 
                { 
                        font-weight: bold; 
                } 
                .italic 
                { 
                         
                } 
                 
                .myClass 
                { 
                        /* 使用内嵌图片做背景 */ 
                        background-image:Embed("images/logo.png"); 
                } 
        </mx:Style>                
         
        <!--以声明方式指定样式(可以一次指定多个样式)--> 
        <mx:Label text="Label" x="10" y="10" styleName="red bold italic" /> 
         
        <!--以编程方式指定样式--> 
            <mx:TextInput id="txt" text="TextInput" x="10" y="36" initialize="setTextInputStyle();" /> 

        <mx:VBox styleName="myClass" x="10" y="85"> 
                <mx:Label text="Label" color="yellow" fontSize="30" /> 
        </mx:VBox>        
     
</mx:Panel>
 
 
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
<?xml version="1.0" encoding="utf-8"?> 
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" 
        title="Skin 的应用"> 
         
        <mx:Script>    
                <![CDATA[ 
                 
                        // 应用自定义皮肤 
                        private function changeSkin():void 
                        { 
                                StyleManager.loadStyleDeclarations("style/customButton.swf"); 
                                 
                                btn.styleName = "customButton" 
                        } 
                         
                ]]> 
        </mx:Script> 
         
        <mx:Style source="style/customButton.css" /> 
         
        <mx:Button id="btn" label="换皮" click="changeSkin();" /> 
         
</mx:Panel>
 
 
4、ToolTip 的样式的控制
style.css
ToolTip    
{  
        fontSize
:  12;  
        fontStyle
:  "italic";  
        color
:  #000000;  
        backgroundColor
:  #FCEA1E
}
 
ToolTipDemo.mxml
<?xml version="1.0" encoding="utf-8"?> 
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" 
        title="ToolTip 的 Demo"> 
                        
        <mx:Style source="style.css" /> 
            
        <mx:TextInput toolTip="我是 TookTip" x="10" y="10"/> 
         
</mx:Panel>
 
 


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

相关文章
|
2月前
|
前端开发 算法 Java
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
121 0
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
251 1
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
161 1
|
6月前
|
前端开发
用 CSS Grid 轻松构建复杂布局
用 CSS Grid 轻松构建复杂布局
317 83
|
6月前
|
设计模式 容器
13.HarmonyOS流式卡片列表实现指南:Flex多行布局详解
在现代移动应用开发中,流式卡片列表是一种常见且实用的UI设计模式。它能够自适应屏幕宽度,在有限空间内高效展示多个内容项。本教程将详细讲解如何使用HarmonyOS的ArkUI框架中的Flex组件实现一个灵活的流式卡片列表,重点关注多行布局与对齐策略的应用。
212 2
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
继承 我们的CSS中很多的属性也是可以继承的,其中相当一部分是跟文字的相关的,比如说颜色、字体、字号。 当然还有一部分是不能继承的。 例如边框、内外边距。 层叠 层叠是CSS的核心机制。 层叠的工作机制: 当元素的同一个样式属性有多种样式值的时候,CSS就是靠层叠机制来决定最终应用哪种样式。 层叠规则: 层叠规则一:找到应用给每个元素和属性的声明。 说明:浏览器在加载每个页面时,都会据此查找到每条CSS规则, 并标识出所有受到影响的HTML元素。
95 1
|
5月前
|
Web App开发 前端开发 数据可视化
用 CSS Grid 实现高效布局的 3 个实战技巧
用 CSS Grid 实现高效布局的 3 个实战技巧
|
5月前
|
前端开发
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),保存资源(图片、脚本、CSS)
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),保存资源(图片、脚本、CSS)
287 35
|
6月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。

热门文章

最新文章