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);
}
}
}
}