flex---->样式和主题

 样式

样式对于一个应用程序来说也是非常有用的,使用样式和主题可以改变单个组件或者全部组件的外观,使他们看起来更加舒服。使用样式、使用字体、指针管理

一、使用样式
通过样式属性可以更改Flex组件的外观,这些属性包含了文字大小、背景颜色等定义。定义样式属性可以有几种方法,包括内部定义、设置组件样式属性、通过外部样式表文件等。

1.1 使用Style组件定义样式
通过<mx:Style>标记,可以定义CSS 2.0的语法。可以把定义的这些样式应用到当前文档或者其子文档。使用<mx:Style>标记定义样式的格式如下所示。

<mx:Style>
selector_name
{
style_property: value;
[...]
}
</mx:Style>

其中,selector_name是样式名称,style_property是样式属性,value是属性的值。这些都是严格遵循CSS 2.0的语法。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Style>
		Button 
		{
			fontSize: 15;
			color: #B3381A;
		}
	</mx:Style>
	<mx:Button id="myButton" label="按钮1" x="150" y="50"/>
	<mx:Button id="myButton2" label="按钮2" x="50" y="50"/>
</mx:Application>

1.2 使用StyleManager类定义样式
在ActionScript中使用StyleManager类,可以使用类的选择器设置样式。使用StyleManager类,还可以声明新的CSS样式,并且应用到Flex程序中的控件。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
 creationComplete="initApp(event)">
 <mx:Style>
  .myStyle 
  {
   color: #FFFFFF;
  }
 </mx:Style>
 <mx:Script>
  <![CDATA[
   import mx.styles.StyleManager;
   
   public function initApp(e:Event):void 
   {
    // 设置 Button 控件的字体代谢哦啊
    StyleManager.getStyleDeclaration("Button").setStyle("fontSize",24);
    // 设置 myStyle 样式类的 color 值
    StyleManager.getStyleDeclaration(".myStyle").setStyle("color",0xB3381A);
    // 设置全局样式
    StyleManager.getStyleDeclaration("global").setStyle("fontStyle","italic");
   }
  ]]>
 </mx:Script>
 <mx:Button id="myButton" label="按钮1" styleName="myStyle" x="20" y="39"/>
 <mx:Label id="myLabel" text="这是一个文本标签." x="123" y="41" styleName="myStyle"/>
</mx:Application>

1.3 外部样式表
Flex同HTML一样,也支持外部的CSS样式表。使用<mx:Style>标记中的source属性,可以把外部的样式表应用到当前文档或者其子文档中。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Style source="style.css"/>
	<mx:Button id="myButton" label="按钮" x="68" y="41"/>
</mx:Application>

二、 使用字体
在应用程序中可以包含字体。包含的字体既可以是默认操作系统内置的,还可以是其他的外部字体。如果使用非系统默认的,那么就需要嵌入到应用程序中。
2.1 使用系统字体
通过fontFamily属性,可以把任何一个字体应用到程序中。然而,并不是所有的系统拥有所有的字体。系统字体并不能以外部信息的形式导出来,也不能嵌入在SWF文件中一起发布。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Style>
		VBox 
		{
			fontFamily: 微软雅黑;
			fontSize: 14pt;
		}
		
		Panel 
		{
			paddingLeft: 10;
			paddingTop: 10;
			paddingBottom: 10;
			paddingRight: 10;
		}
	</mx:Style>
	
	<mx:Panel title="字体显示面板" x="10" y="10">
		<mx:VBox>
			<mx:Button label="这个按钮使用了微软雅黑"/>
			<mx:Label text="这个文本使用微软雅黑"/>
			<mx:TextArea height="75">
			<mx:text>
				这个文本域使用了微软雅黑
			</mx:text>
			</mx:TextArea>
		</mx:VBox>
	</mx:Panel>
</mx:Application>

2.2 使用嵌入式字体
相比较使用系统字体,嵌入式字体的优势在于在程序运行时,指定的字体总是显示出来,不管系统中是否有这种字体。开发时不用去考虑字体样式丢失的问题。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Style>
		@font-face 
		{
			src: url("assets/msyh.ttf");
			fontFamily: myFontFamily;
			advancedAntiAliasing: true;
		}
		VBox 
		{
			fontFamily: fontFamily;
			fontSize: 14pt;
		}
		
		Panel 
		{
			paddingLeft: 10;
			paddingTop: 10;
			paddingBottom: 10;
			paddingRight: 10;
		}
	</mx:Style>
	
	<mx:Panel title="嵌入式字体" x="10" y="10">
		<mx:VBox>
			<mx:Button label="这个按钮嵌入了微软雅黑"/>
			<mx:Label text="这个文本嵌入了微软雅黑"/>
			<mx:TextArea height="75">
			<mx:text>
				这个文本域嵌入了微软雅黑
			</mx:text>
			</mx:TextArea>
		</mx:VBox>
	</mx:Panel>

</mx:Application>

三、 指针管理器
在Flex中,使用指针管理器可以控制鼠标指针的图片。当程序等待进程到完成的过程中,可以使用指针管理器提供一个用户提示。这些图片类型可以包括JPEG、GIF、PNG以及SVG等,还可以是一个Sprite对象,或者一个SWF文件。
指针管理器是放在包mx.managers.CursorManager中的,通过CursorManager类的静态属性和方法就可以控制鼠标指针的样式。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.managers.CursorManager;
			import flash.events.*;
			// 定义指针变量ID
			private var cursorID:Number = 0;
			// 嵌入等待图片
			[Embed(source="assets/wait.gif")]
			private var waitCursorSymbol:Class;
			// 加载图片
			private function initImage(event:MouseEvent):void 
			{
				// 设置光标忙碌状态
				cursorID = CursorManager.setCursor(waitCursorSymbol);
				// 加载图片
				image1.load("http://pic.nipic.com/2008-03-10/200831013447396_2.jpg");
			}
			// 完成图片加载,移除指针样式
			private function loadComplete(event:Event):void
			{
				CursorManager.removeCursor(cursorID);
			}
		]]>
	</mx:Script>
	<mx:VBox x="36" y="23">
		<!-- 按钮触发图片加载 -->
		<mx:Button id="myButton" label="加载图片" fontSize="14" click="initImage(event);"/>
		<!-- 图像控件 -->
		<mx:Image id="image1"
			scaleContent="true"
			complete="loadComplete(event);"/>
	</mx:VBox>
</mx:Application>

 

posted on 2012-08-29 16:32  小强斋太  阅读(173)  评论(0编辑  收藏  举报

导航