FLEX自定义组件干的计算器界面
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); } } } }