按钮
Flex中的按钮控件分为几种,
普通按钮
按钮条
单选框
复选框
弹出式按钮
文本链接按钮
一、普通按钮
普通按钮在大部分应用程序中都会出现,使用的频率非常高。按钮是最简单直接的来与用户交互的方式之一,在Flex中也提供了按钮Button控件.
1.1 使用Button控件设计按钮
在Flex中提供了按钮Button控件,用来设计按钮。按钮的设计相对简单,只需从工具面板中将其拖放到设计窗口即可。重点看的是生成按钮Button控件之后的MXML代码。
<mx:Button x="80" y="37" label="按钮" fontSize="12"/>
1.2 按钮中嵌入图片
在设计按钮样式时,除了可以更改按钮的文字外,还可以在按钮中嵌入图片资源。
<mx:Button x="40" y="33" label="有图片的按钮" icon="@Embed(source='assets/buttonIcon.jpg')" fontSize="14"/>
1.3 设置按钮样式
在设计按钮的样式中,不只能只显示一种图片,还可以根据不同的按钮状态显示不同的按钮样式。如当鼠标经过、按下、释放等状态时,都会有各自状态的图片显示。
<mx:Button x="57" y="54" upSkin="@Embed(source='assets/buttonUp.jpg')" overSkin="@Embed(source='assets/buttonOver.jpg')" downSkin="@Embed(source='assets/buttonDown.jpg')"/>
1.4按钮条的设计
<?xml version="1.0"?> <!-- Simple example to demonstrate the ButtonBar control. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.events.ItemClickEvent; // Event handler function to print a message // describing the selected Button control. private function clickHandler(event:ItemClickEvent):void { myTA.text="Selected button index: " + String(event.index) + "\n" + "Selected button label: " + event.label; } ]]> </mx:Script> <mx:Panel title="ButtonBar Control Example" height="75%" width="75%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10" color="0xffffff" borderAlpha="0.15"> <mx:Label width="100%" color="0x000000" text="Select a button in the ButtonBar control."/> <mx:TextArea id="myTA" width="100%" height="100%" color="0x000000"/> <!--给ButtonBar添加itemClick事件--> <mx:ButtonBar itemClick="clickHandler(event);" color="0x000000"> <mx:dataProvider> <mx:Array> <mx:String>Flash</mx:String> <mx:String>Director</mx:String> <mx:String>Dreamweaver</mx:String> <mx:String>ColdFusion</mx:String> </mx:Array> </mx:dataProvider> </mx:ButtonBar> </mx:Panel> </mx:Application>
1.5 按钮事件
在按钮设计中,除了通过设置相应属性改变标签描述和样式外,应用最多的还是按钮事件,尤其是按钮的单击事件。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ // 单击次数 private var clickTime:int = 0; /** * 鼠标单击事件 * */ private function Button1_Click(e:MouseEvent):void { // 累加次数 clickTime += 1; // 设置文本控件显示内容 Label1.text = "单击了" + clickTime.toString() + "次。"; } ]]> </mx:Script> <mx:Button x="77" y="69" label="单击这里" click="Button1_Click(event)" fontSize="12"/> <mx:Label id="Label1" x="77" y="19" text="Label" width="157" fontSize="14"/> </mx:Application>
二、 单选框的设计
在用表单调查表中,可以使用选择框来减少用户的操作。单选框是在一组选择框中只能选取一个选项,在限制选项选择时最为有用。
2.1 使用RadioButton控件设计单选框
在Flex中,提供了单选框RadioButton控件,使用此控件可以设计单选框按钮。
<mx:RadioButton x="41" y="36" label="男" fontSize="12" /> <mx:RadioButton x="94" y="36" label="女" fontSize="12" />
2.2 使用单选框组
单选框是可以以分组的形式组合在一起的,这样就可以同时有多个最别的单选框可供选择。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ /** * 更改事件 * */ private function radiogroup1_change():void { // 设置文本控件的显示内容 lblSelectedText.text = "你选择的项是:" + radiogroup1.selection.label; } ]]> </mx:Script> <mx:RadioButtonGroup id="radiogroup1" change="radiogroup1_change()"/> <mx:RadioButton x="39" y="28" label="男" groupName="radiogroup1" fontSize="12"/> <mx:RadioButton x="39" y="54" label="女" groupName="radiogroup1" fontSize="12"/> <mx:Label x="39" y="101" text="Label" fontSize="14" id="lblSelectedText"/> </mx:Application>
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 btnCalculate_click():void { // 计算结果 var result:Number = 0; // 判断操作符 switch(rdgOperate.selection.value) { case 0: // 加法计算 result = Number(txtValue1.text) + Number(txtValue2.text); break; case 1: // 减法计算 result = Number(txtValue1.text) - Number(txtValue2.text); break; default: break; } // 设置文本控件的内容 lbResult.text = "计算结果为" + result.toString(); } ]]> </mx:Script> <mx:TextInput id="txtValue1" x="24" y="22" width="53"/> <mx:TextInput id="txtValue2" x="183" y="22" width="53"/> <mx:RadioButtonGroup id="rdgOperate"/> <mx:RadioButton x="94" y="22" value="0" label="+" groupName="rdgOperate"/> <mx:RadioButton x="135" y="22" value="1" label="-" groupName="rdgOperate"/> <mx:Button x="262" y="20" label="计算" fontSize="12" click="btnCalculate_click()"/> <mx:Label id="lbResult" x="346" y="24" text="Label" fontSize="12"/> </mx:Application>
三、复选框
除了单选之外,多选也是平时用的最多的。在Flex中同样也提供了相应的复选框的控件,以提供选择多个内容的表单方式。
3.1 使用CheckBox控件设计复选框
创建一个按钮CheckBox控件有两种方式:一种是直接拖放控件到设计视图中;另一种是编写代码。第一种方式拖放控件到设计视图中相对直观,不用编写代码。在开发小型的应用程序的时候,可以提高开发效率。
<mx:CheckBox x="56" y="37" label="足球" fontSize="14" selected="true"/> <mx:CheckBox x="56" y="67" label="篮球" fontSize="14"/> <mx:CheckBox x="56" y="97" label="乒乓球" fontSize="14"/>
3.2 使用ActionScript控制复选框
在实际开发中,通常会遇到使用ActionScript脚本语言来获取或设置复选框的内容的情况。本节将会讨论如何使用ActionScript脚本语言获取多个复选框的内容。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ /** * 复选框的 change 事件 * */ private function checkBox_change(e:Event):void { // 判断该项目是否选中 if(e.target.selected) { // 获取选择的项目 lbItems.text = lbItems.text + e.target.label + " "; } else { // 删除选择的项目 lbItems.text = lbItems.text.replace(e.target.label + " ", ""); } } ]]> </mx:Script> <mx:CheckBox x="56" y="37" label="足球" fontSize="14" change="checkBox_change(event)"/> <mx:CheckBox x="56" y="67" label="篮球" fontSize="14" change="checkBox_change(event)"/> <mx:CheckBox x="56" y="97" label="乒乓球" fontSize="14" change="checkBox_change(event)"/> <mx:Label id="lbItems" x="56" y="145" text="您选择的项目是:" width="354" fontSize="14"/> </mx:Application>
3.3 动态创建复选框很多情况下,都需要动态的创建复选框。动态创建复选框就会使用到ActionScript语言,动态的创建,动态的设置其属性和事件。本节将会讲述如何动态的创建复选框,并动态的设置属性和事件。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()"> <mx:Script> <![CDATA[ import mx.controls.CheckBox; /** * 动态创建复选框,并设置其属性和事件 * */ private function initApp():void { // 定义数组 var items:Array = ["足球", "篮球", "排球", "乒乓球", "体操", "田径"]; // 遍历数组,批量创建复选框 for(var i:int=0; i<items.length; i++) { // 创建复选框 var checkBox:CheckBox = new CheckBox(); // 设置标识 checkBox.id = "checkBox" + i.toString(); checkBox.label = items[i].toString(); // 设置标签字体大小 checkBox.setStyle("fontSize", 14); // 位置 checkBox.x = 100; checkBox.y = (i + 1) * 25; // 设置事件 checkBox.addEventListener(Event.CHANGE, checkBox_change); // 增加控件到舞台 this.addChild(checkBox); } } /** * 复选框的 change 事件 * */ private function checkBox_change(e:Event):void { // 判断该项目是否选中 if(e.target.selected) { // 获取选择的项目 lbItems.text = lbItems.text + e.target.label + " "; } else { // 删除选择的项目 lbItems.text = lbItems.text.replace(e.target.label + " ", ""); } } ]]> </mx:Script> <mx:Label id="lbItems" x="10" y="200" text="您选择的项目是:" width="354" fontSize="14"/> </mx:Application>
四、弹出式按钮的设计
弹出式按钮是有两个横向排列的按钮组成的,一个是主体按钮,另一个是一个小的弹出式按钮。当使用鼠标单击这个弹出式按钮的时候,就会弹出一个菜单。
4.1 创建PopUpButton控件, 获取弹出式按钮菜单的内容
在Flex中,已经提供了设计弹出式按钮的控件。使用PopUpButton控件,可以很容易的设计出一个弹出式按钮。
<?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.MenuEvent; import mx.controls.Menu; import mx.events.ItemClickEvent; private var itMenu:Menu; /** * 初始化数据,创建数据源 * */ private function initApp():void { // 创建一个菜单 itMenu = new Menu(); // 定义一个数组对象,作为数据源 var dp:Object = [ {label:"台式机"}, {label:"笔记本"}, {label:"打印机"}, {label:"数码相机"} ]; // 菜单对象与数据源绑定 itMenu.dataProvider = dp; itMenu.addEventListener("itemClick", itemClickHandler); // 设置弹出的菜单 puBtnIT.popUp = itMenu; } /** * 选择菜单事件 * */ private function itemClickHandler(event:MenuEvent):void { // 获取菜单选项内容 var label:String = event.item.label; lbSelectItem.text = label; // 设置按钮标签内容,并关闭菜单 puBtnIT.label = label; puBtnIT.close(); // 设置菜单的索引为选项的索引值 itMenu.selectedIndex = event.index; } ]]> </mx:Script> <mx:PopUpButton fontSize="14" id="puBtnIT" label="请选择产品类型" creationComplete="initApp()" x="46" y="26" /> <mx:Label id="lbSelectItem" x="206" y="32" text="没有选择任何类型" fontSize="14" /> </mx:Application>
5 链接按钮的设计
链接按钮是一个以文本链接形式的按钮,使用链接按钮可以在浏览器中打开一个链接。
5.1 创建LinkButton控件
在Flex中提供了设计链接按钮的控件,使用LinkButton控件就很容易设计出一个链接按钮。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:LinkButton x="50" y="36" label="影视金曲" fontSize="14" click="navigateToURL(new URLRequest('http://list.mp3.baidu.com/list/tvs.html?id=1?top5'),'_blank')"/> <mx:LinkButton x="138" y="36" label="经典老歌" fontSize="14" click="navigateToURL(new URLRequest('http://list.mp3.baidu.com/list/oldsong.html?top6'),'_blank')"/> <mx:LinkButton x="226" y="36" label="热门对唱" fontSize="14" click="navigateToURL(new URLRequest('http://list.mp3.baidu.com/list/duichang.html?top20'),'_blank')"/> </mx:Application>
5.2 设置样式
如果链接按钮的默认样式不能满足需求,还可以自定义按钮的样式。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Style> LinkButton { <!-- 设置圆角 --> cornerRadius : 10; <!-- 设置鼠标滑过的颜色 --> rollOverColor : "0x00FFFFFF"; <!-- 设置鼠标选中的颜色 --> selectionColor : "0x3A7EE4"; } </mx:Style> <mx:LinkButton x="50" y="36" label="古典音乐" fontSize="14" /> <mx:LinkButton x="138" y="36" label="民族音乐" fontSize="14" /> <mx:LinkButton x="226" y="36" label="流行音乐" fontSize="14" /> </mx:Application>
6、简易计算器
计算器是日常生活中最常见也是最常用到的计算工具,本章将会制作一个简易计算器,并详细讲解其设计思路和相关算法。
<?xml version="1.0"?> <!-- Simple example to demonstrate the ButtonBar control. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.events.ItemClickEvent; // Event handler function to print a message // describing the selected Button control. private function clickHandler(event:ItemClickEvent):void { myTA.text="Selected button index: " + String(event.index) + "\n" + "Selected button label: " + event.label; } ]]> </mx:Script> <mx:Panel title="ButtonBar Control Example" height="75%" width="75%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10" color="0xffffff" borderAlpha="0.15"> <mx:Label width="100%" color="0x000000" text="Select a button in the ButtonBar control."/> <mx:TextArea id="myTA" width="100%" height="100%" color="0x000000"/> <!--给ButtonBar添加itemClick事件--> <mx:ButtonBar itemClick="clickHandler(event);" color="0x000000"> <mx:dataProvider> <mx:Array> <mx:String>Flash</mx:String> <mx:String>Director</mx:String> <mx:String>Dreamweaver</mx:String> <mx:String>ColdFusion</mx:String> </mx:Array> </mx:dataProvider> </mx:ButtonBar> </mx:Panel> </mx:Application>