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

 

你可能感兴趣的:(Flex,Flash,ide)