FLEX自定义组件做的计算器界面
package components{import mx.containers.VBox;import mx.containers.Tile;import mx.controls.TextInput;import mx.controls.Button;import mx.events.FlexEvent;import flash.events.Event;import flash.events.MouseEvent;public class NumericDisplay extends VBox{//定义组件的输入框private var display:TextInput;//定义组件的显示的问题标题private var buttonsTitle:Tile;//添加元标签给IDE看的[Inspectable(defaultValue=10)]private var _numButtons:uint = 10;public function NumericDisplay(){super();//注册初始化事件,该事件是FLEX自身定义的addEventListener(FlexEvent.INITIALIZE, initializeHandler);}//给按钮属性绑定事件,意思是只要触发numButtonsChange事件numButtons数值就会动态的刷新[Bindable(event="numButtonsChange")]public function get numButtons():uint{return _numButtons;}//设置_numButtons属性的值 public function set numButtons(value:uint):void{ _numButtons = value; //在设置该属性的过程中,把numButtonsChange事件加入到事件流中去。 dispatchEvent(new Event("numButtonsChange")); } //由造函数调用 private function initializeHandler(event:FlexEvent):void{ paint(); } //当点击鼠标左键时相应的时间 private function buttonClickHandler(event:MouseEvent):void{ //在输入框中显示当前时间流中拿到目标对象,并获取他相关的属性值。 display.text += (event.target as Button).label; } //画界面 private function paint():void{ //实例化TextInput输入框组件 display = new TextInput(); //设置其宽度 display.width=185; //并且加入到父组件中去 addChild(display); //实例化Tile组件 buttonsTitle = new Tile(); //把改组件添加到父组件中去 addChild (buttonsTitle); //循环创建BUTTON按钮 for (var i:uint = 0; i < _numButtons; i++){ //实例化按钮 var currentButton:Button = new Button(); //设置其LABEL值 currentButton.label=i.toString(); //为当前BUTTON对象注册click事件 currentButton.addEventListener(MouseEvent.CLICK, buttonClickHandler); //把创建好的BUTTON放入TILE容器中去 buttonsTitle.addChild (currentButton); } }}}
?