zoukankan      html  css  js  c++  java
  • 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>

     

     

     

  • 相关阅读:
    源码篇:Python 实战案例----银行系统
    源码分享篇:使用Python进行QQ批量登录
    python制作电脑定时关机办公神器,另含其它两种方式,无需编程!
    Newtonsoft.Json 去掉
    C#Listview添加数据,选中最后一行,滚屏
    C# 6.0语法糖
    XmlHelper
    AppSettings操作类
    JsonHelper
    JS加载获取父窗体传递的参数
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5429497.html
Copyright © 2011-2022 走看看