flex>其他交互设计 小强斋

其他交互设计

在交互设计控件中,除了文本控件、按钮控件和图表控件等之外,还有其他一些比较实用的交互式控件,如

数字选择器、日期显示、加载外部swf文件、加载图像、颜色选择器、警告框、进度条、滚动条

一、数字选择器

数字选择器NumericStepper控件的主要是用来选择数字的,是由一个文本域和两个上下箭头的按钮组成。除了使用两个上下箭头的按钮选择数字之外,还可以通过键盘的上下方向键选择。在很多方面的应用都会使用到数字选择器NumericStepper控件,如日期的年月日、时间的时分秒等。

1 创建NumericStepper控件

创建一个数字选择器NumericStepper控件有两种方式:一种是直接拖放控件到设计视图中;另一种是编写代码。第一种方式拖放控件到设计视图中相对直观,不用编写代码。在开发小型的应用程序的时候,可以提高开发效率。数字选择器NumericStepper控件有两个很重要的属性:MinimumMaximumMnimum表示选择数字的最小值。Maximum表示选择数字的最大值。

应用NumericStepper构建一个复合型的日期控件。

<mx:NumericStepper minimum="1908" maximum="2000"
		x="10" y="10" />
	<mx:Label text="年" x="85" y="10" />
	<mx:NumericStepper minimum="1" maximum="12"
		x="100" y="10" />
	<mx:Label text="月" x="160" y="10" />
	<mx:NumericStepper minimum="1" maximum="31"
		x="175" y="10" />
	<mx:Label text="日" x="235" y="10" />

二、日期显示

日期可以通过两种控件来显示,一个是DateChooser控件,另一个是DateField控件。DateChooser控件是以日历的形式显示的,而DateField控件则是以文本的形式显示的。

 2.1使用DateChooser控件实现日期选择

DateChooser控件是一个日历形式的控件,在头部显示了年份和月份的名称,主体部分则是以网格的显示排列了当前年份和月份的所有的天。用户可以从中选择任意的一天。

<mx:DateChooser x="37" y="10"/>	

2.2 使用DateField控件实现日期选择

DateField控件是一个以文本形式显示的日期控件。在文本框的右侧是一个日历的小图标,当用户单击图表的时候,会弹出一个包含DateChooser控件的窗口。用户选择了一个日期之后,选择的日期会填充到文本框中,同时,此窗口会自动关闭。DateField控件的主要应用在表单等的操作上。

<mx:DateField x="52" y="46"/>

2.3 使用日期类

日期类中包含了一些常用的关于日期的方法,使用这些方法,可以很方便的获取日期信息。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute" creationComplete="InitApp()">
	<mx:Script>
		<![CDATA[
			// 初始化
			private function InitApp():void
			{
				// 创建日期对象
				var date1:Date = new Date(2008, 07, 08);
				// 设置默认显示日期
				dc1.selectedDate = date1;
			}       
		]]>       
	</mx:Script>       
	<mx:DateChooser id="dc1" x="100" y="100" />
</mx:Application>

2.4 设置DateField控件的日期格式

在实际开发过程中,经常会需要自定义某些特殊的日期格式,以满足需要。使用formatString属性就可以设定DateField控件的日期格式。formatString属性的值可以设定为诸如MMDDYYYYYY等字符的组合。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:DateField x="281" y="208" formatString="YYYY-MM-DD" />
</mx:Application>

2.5 设置DateChooser控件的中文显示

默认情况下,DateChooser控件是显示英文的月份和周的。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
	<mx:Script>
		<![CDATA[
			private function InitDataChooser():void
			{
				// 设置月份名称
				var arrMonthName:Array = 
					["一月", "二月", "三月", "四月", "五月", "六月", 
					"七月", "八月", "九月", "十月", "十一月", "十二月"];
				
				// 设置周名称
				var arrWeekName:Array = ["星期日", "星期一", "星期二", 
									"星期三", "星期四", "星期五", "星期六"];
				
				dc1.monthNames = arrMonthName;
				dc1.dayNames = arrWeekName;
			}
		]]>
	</mx:Script>
	<mx:DateChooser id="dc1" x="151" y="86" creationComplete="InitDataChooser()"/>
	
</mx:Application>

 三、 加载外部SWF文件

如果在一个Flex应用程序中,把另一个Flex应用程序作为SWF文件加载进来,就需要使用SWFLoader控件。

 3.1创建SWFLoader控件

SWFLoader控件的主要用途就是加载外部的SWF文件,这个文件可以Flash CS3编译生成的,也可以是Flex Builder 3编译生成的。

默认情况下SWF文件的内容可以自适应SWFLoader控件的大小。SWFLoader控件除了加载SWF文件格式外,也可以加载其他的文件格式到Flex应用程序中,如GIFJPEGPNGSVG等。

定义一个SWFLoader控件可以在代码中使用<mx:SWFLoader>标记,也可以直接从工具面板中拖放控件到主窗口中。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:SWFLoader x="10" y="10" source="@Embed(source='Asset/test.swf')"/>	
</mx:Application>

3.2 与已加载的SWF文件交互

SWF文件加载到Flex程序中后,首要的问题就是怎么样能与这个SWF文件交互,即访问这个SWF文件的相关内容。首先看一下怎么样使用SWFLoader控件,在一个Flex程序中加载另一个Flex程序。

1.访问已加载的SWF文件中的控件

lbl.text = loadedSM.application["lblShow"].text;

2.访问已加载的SWF文件中的变量

loadedSM = SystemManager(myLoader.content);

loadedSM.application["strShow"] = "这是更新后的文字。";

3.访问已加载的SWF文件的方法

loadedSM = SystemManager(myLoader.content);

ChildApp(loadedSM.application).SetShowText("这是更新后的文字。");

main.mxml

<?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.SystemManager;
			
			private var loadedSM:SystemManager;
			
			// 初始化SWF文件,并把其内容赋给 SystemManager 对象
			private function InitSWFApp():void 
			{
				loadedSM = SystemManager(myLoader.content);
			}
			
			// 获取SWF文件中 Label 控件的 text 属性
			private function GetSWFLabel():void
			{
				lbl.text = loadedSM.application["lblShow"].text;
			}
			
			// 修改SWF文件中 Label 控件的 text属性
			private function UpdateSWFLabel():void
			{
				loadedSM.application["lblShow"].text = "这是更新后的文字。";
			}
		]]>
	</mx:Script>
	
	<mx:Label id="lbl" x="203" y="62"/>
	<mx:SWFLoader id="myLoader" width="300" source="ChildApp.swf" x="10" y="10"
		creationComplete="InitSWFApp();"/>
	<mx:Button click="GetSWFLabel();" x="10" y="60" label="获取SWF文件中的Label控件"/>
	<mx:Button label="修改SWF文件中的Label控件" click="UpdateSWFLabel();" x="10" y="90"/>
</mx:Application>

ChildApp.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Label id="lblShow" text="这是已加载的SWF文件中的控件" fontSize="20" x="1" y="0"/>
</mx:Application>

四、 加载图像

Flex应用程序中,也可以实现加载图像的功能。Flex支持绝大部分主流的图片格式,包括GIFJPEGPNGSVG等等4.1创建Image控件

Flex中,加载图像的常用方法之一就是使用Image控件。

<mx:Image x="10" y="10" source="@Embed(source='assets/test.jpg')"/>

4.2 加载图像

除了设置Image控件的Source属性直接加载图像外,还可以使用代码来控制图像的加载。加载图像主要使用Image控件的load()方法。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			private function InitImage():void
			{
				// 加载图片资源
				img.load("assets/test.jpg");
			}
		]]>
	</mx:Script>
	<mx:Image id="img" x="10" y="10" creationComplete="InitImage();"/>
</mx:Application>

五、颜色选择器

颜色选择器允许用户从一个下拉式的颜色面板中,选择适合的颜色值。颜色选择器主要应用于文本编辑器,更换控件样式颜色等。

 5.1创建ColorPicker控件

Flex中,已经提供了ColorPicker控件来创建颜色选择器。

<mx:ColorPicker x="10" y="10"/>

5.2 自定义面板显示的颜色

默认情况下,颜色面板会列出系统所有的颜色。当然,通过代码还可以自定义面板中列出的颜色。自定义颜色通过ColorPicker控件的dataProvider属性,与数组绑定,然后可以在数组中定义要列出的颜色的值。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

	<mx:Script>
		<![CDATA[
			[Bindable]
			// 创建数组,填充各种颜色的RGB值
			public var simpleDP:Array = ['0x000000', '0xFF0000', '0xFF8800',
				'0xFFFF00', '0x88FF00', '0x00FF00', '0x00FF88', '0x00FFFF',
				'0x0088FF', '0x0000FF', '0x8800FF', '0xFF00FF', '0xFFFFFF'];
		]]>
	</mx:Script>
	
	<mx:ColorPicker x="10" y="10" dataProvider="{simpleDP}" />
	
</mx:Application>

5.3 自定义面板显示的标签

除了可以自定义颜色的值外,还可以定义颜色标签的描述。其方法与5.2节类似,也是通过绑定数组。不同的是,需要定义一个数组集合,其中定义了颜色标签、颜色值和描述。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.events.ColorPickerEvent;
			import mx.events.DropdownEvent;
			
			// 创建数组,并填充颜色相关数据
			[Bindable]
			public var complexDPArray:Array = [
						{label:"黄色", color:"0xFFFF00",
						descript:"黄色"},
						{label:"粉色", color:"0xFF66CC",
						descript:"粉色"},
						{label:"深红色", color:"0x990000",
						descript:"深红色"},
						{label:"蓝色", color:"0x000066",
						descript:"蓝色"},
						{label:"深绿色", color:"0x006600",
						descript:"深绿色"},
						{label:"褐色", color:"0x666666",
						descript:"褐色"}];
		]]>
	</mx:Script>
	
	<mx:ArrayCollection id="complexDP" source="{complexDPArray}"/>
	<mx:ColorPicker id="cp" dataProvider="{complexDP}" editable="false" x="23" y="19"/>
</mx:Application>

六、警告框的设计

警告框是在实际开发中使用最多的功能。在Flex中,提供了一个Alert类来实现警告框,其中定义了一个全局的静态方法show()

 6.1创建警告框

所有的Flex组件都可以调用Alert类中的静态方法show(),弹出一个带有消息的模式警告框。

text 在 Alert 控件中显示的文本字符串。此文本将在警告对话框中居中显示。title 标题栏中显示的文本字符串。此文本左对齐。flags Alert 控件中放置的按钮。

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ // 引用 Alert 类 import mx.controls.Alert; private function Btn_Click():void { // 调用show方法,弹出警告框 Alert.show("这是一个警告框!", "警告框"); } ]]> </mx:Script> <mx:Button click="Btn_Click()" label="警告框" x="77" y="50" fontSize="12"/> </mx:Application>

6.2 警告框的事件

默认情况下,弹出的警告框只有OK按钮。使用Alert类还可以设置其他的按钮和显示数量,并且还可以侦听到警告框中按钮的事件。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.CloseEvent;
			
			// 创建 Alert 对象
			private var myAlert:Alert;
			
			// 按钮单击事件
			private function Btn_Click():void
			{
				myAlert = Alert.show("确认执行此操作吗?", "提示框",
							Alert.YES | Alert.NO, this, 
							AlertListener, null, Alert.YES);
			}
			
			// 对话框侦听事件
			private function AlertListener(e:CloseEvent):void
			{
				// 判断对话框中被单击的按钮
				if(e.detail == Alert.YES)
				{
					lbText.text = "您按了确认按钮。";
				}
				else
				{
					lbText.text = "您按了取消按钮。";
				}
			}
		]]>
	</mx:Script>
	<mx:Label id="lbText" />
	<mx:Button click="Btn_Click();" label="提示框"  x="77" y="50" fontSize="12"/>
</mx:Application>

mx.controls.Alert.show(text:String="", title:String="", flags:uint=4, parent:Sprite=null, closeHandler:Function=null, iconClass:Class=null, defaultButtonFlag:uint=4, moduleFactory:IFlexModuleFactory=null):Alert

弹出 Alert 控件的静态方法。在 Alert 控件中选择一个按钮或按下 Esc 键时,将关闭该控件。

text 在 Alert 控件中显示的文本字符串。此文本将在警告对话框中居中显示。

title 标题栏中显示的文本字符串。此文本左对齐。

flags Alert 控件中放置的按钮。有效值为 Alert.OKAlert.CANCELAlert.YESAlert.NO。默认值为Alert.OK。使用按位 OR 运算符可显示多个按钮。例如,传递(Alert.YES | Alert.NO) 显示“是”和“否”按钮。无论按怎样的顺序指定按钮,它们始终按照以下顺序从左到右显示:“确定”、“是”、“否”、“取消”。

parent Alert 控件在其上居中的对象。

closeHandler 按下 Alert 控件上的任意按钮时将调用的事件处理函数。传递给此处理函数的事件对象是 CloseEvent 的一个实例;此对象的detail 属性包含Alert.OKAlert.CANCELAlert.YESAlert.NO 值。

iconClass 位于 Alert 控件中文本左侧的图标的类。

defaultButtonFlag 指定默认按钮的位标志。您可以指定一个值,并且只能是Alert.OKAlert.CANCELAlert.YESAlert.NO 中的一个值。默认值为Alert.OK。按 Enter 键触发默认按钮,与单击此按钮的效果相同。按 Esc 键触发“取消”或“否”按钮,与选择相应按钮的效果相同。

moduleFactory 此 Alert 应在其中查找其嵌入字体和样式管理器的 moduleFactory。

6.3 自定义警告框的按钮标签

默认情况下,警告框的按钮标签是英文的。通过Alert类,可以设置其按钮标签,使其成为中文。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.CloseEvent;
			
			// 按钮单击事件
			private function Btn_Click():void
			{
				// 设置对话框的按钮文字描述
				Alert.yesLabel = "是";
				Alert.noLabel = "否";
				Alert.cancelLabel = "取消";
				
				// 弹出对话框
				Alert.show("确认执行此操作吗?", "提示框",
						Alert.YES | Alert.NO | Alert.CANCEL);
			}
		]]>
	</mx:Script>
	<mx:Label id="lbText" />
	<mx:Button click="Btn_Click();" label="提示框"  x="77" y="50" fontSize="12"/>
</mx:Application>

6.4 设置提示框的文本大小

6.3节中的示例可以看出,在警告框设置成中文后,文字较小而且模糊不清。要解决这个问题,就需要通过样式来设置按钮标签文本的大小。使用Alert类,还可以设置警告框的宽度和高度。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<!-- 设置对话框的样式 -->
	<mx:Style>
		Alert
		{
			font-size:14px;
		}
	</mx:Style>
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			// 创建Alert对象
			private var myAlert:Alert;
			// 按钮单击事件
			private function Btn_Click():void
			{
				myAlert = Alert.show("这是一个警告框!", "警告框");
				// 设置对话框的宽度和高度
				myAlert.width = 200;
				myAlert.height = 150;
			}
		]]>
	</mx:Script>
	<mx:Button click="Btn_Click();" label="警告框"  x="77" y="50" fontSize="12"/>
</mx:Application>


6.5 设置提示框的图标

默认情况下,警告框是没有任何图标的。但是,可以通过Alert类的参数,自定义一个警告框的图标。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			// 嵌入图片资源
			[Embed(source="assets/alertIcon.png")]
			[Bindable]
			public var alertIcon:Class;
			
			private function Btn_Click():void
			{
				Alert.show("这是一个警告框!", "警告框", Alert.OK, null, null, alertIcon);
			}
		]]>
	</mx:Script>
	<mx:Button click="Btn_Click();" label="警告框"  x="77" y="50" fontSize="12"/>
</mx:Application>


七、进度条的设计

进度条可以用来显示某个任务执行的进度,如文件下载、播放位置等。进度条可以使程序操作界面更加人性化、更加直观。本章将详细讲述Flex中进度条的设计。

7.1创建ProgressBar控件

创建一个ProgressBar控件是相当容易的,只需要把控件拖放到设计窗口,并设置其属性Source即可。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			private function LoadImage():void
			{
				// 加载图片
				img.load("assets/test.jpg");
			}
		]]>
	</mx:Script>
	
	<mx:Button x="10" y="10" label="加载图片" fontSize="12" click="LoadImage()"/>
	<mx:ProgressBar x="10" y="42" source="img"/>
	<mx:Image id="img" x="10" y="78"/>
</mx:Application>


7.2 设置进度条的标签

默认情况下,进度条的标签显示的是英文描述。通过其属性Label的值,可以设置为中文显示。在标签属性中,有一些特殊字符代表了特殊的含义。这些特殊字符表示的含义如下所示。

?%1:已经加载的字节数。

?%2:字节总数。

?%3:加载的百分比。

?%%:百分比符号(%)。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			private function LoadImage():void
			{
				// 加载图片
				img.load("assets/test.jpg");
			}
			
			private function InitProgBar():void
			{
				// 设置进度条文字说明
				progBar.label = "图片大小:%2 字节,已加载: %1 字节 , 加载百分比:%3%%";
			}
		]]>
	</mx:Script>
	
	<mx:Button x="10" y="10" label="加载图片" fontSize="12" click="LoadImage()"/>
	<mx:ProgressBar id="progBar" x="10" y="42" source="img" creationComplete="InitProgBar()"/>
	<mx:Image id="img" x="10" y="78"/>
</mx:Application>

 

 

 

原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5429497.html