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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值