您当前的位置: 首页 > 

Jave.Lin

暂无认证

  • 3浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

AS3 OptionsList ---- 选项框列表类

Jave.Lin 发布时间:2012-04-11 20:01:39 ,浏览量:3

Option类:

package
{
	import flash.display.Shape;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.filters.GlowFilter;

	/**
	 * 列表框子控件--列表选项框(单个选项)
	 * @author Jave.Lin
	 */	
	public class Option extends Control
	{
		private var _isDrawBorder:Boolean=false;//是否绘制边框
		private var _mask:Shape;
		private var _isDowned:Boolean=false;
		private var _glowFilter:GlowFilter;
		//数据对象
		private var _data:Object;
		//显示数据对象文本
		private var _textbox:TextBox;
		
		public function get isDrawBorder():Boolean
		{
			return _isDrawBorder;
		}
		
		public function set isDrawBorder(value:Boolean):void
		{
			if(_isDrawBorder!=value)
			{
				_isDrawBorder=value;
				
				refreshBackground();
			}
		}
		
		public function get textColor():uint
		{
			return _textbox.textColor;
		}
		
		public function set textColor(value:uint):void
		{
			_textbox.textColor=value;
		}
		
		public override function get width():Number
		{
			return super.width;
		}
		
		public override function set width(value:Number):void
		{
			if(width!=value)
			{
				_w=value;
				_textbox.width=_w;
				
				refreshBackground();
			}
		}
		
		public override function get height():Number
		{
			return super.height;
		}
		
		public override function set height(value:Number):void
		{
			if(height!=value)
			{
				_h=value;
				_textbox.height=_h;
				
				refreshBackground();
			}
		}
		
		public function get data():Object
		{
			return _data;
		}
		
		public function set data($data:Object):void
		{
			if(_data!=$data)
			{
				_data=$data;
				if(_data)
				{
					_textbox.text=_data.toString();
				}
				else
				{
					_textbox.text='';
				}
				refreshBackground();
			}
		}
		
		public function Option($data:Object)
		{
			super();
			
			data=$data;
		}
		
		public function setWithAndHeight($width:Number,$height:Number):void
		{
			_textbox.width=_w=$width;
			_textbox.height=_w=$height;
			
			refreshBackground();
		}
		
		protected override function initialize():void
		{
			this.mouseChildren=false;
			
			_textbox=new TextBox();
			_textbox.isDrawBorder=false;
			_textbox.isReadOnly=true;
			_textbox.isSelectable=false;
			_textbox.fontSize=10;
			addChild(_textbox);
			
			_mask=new Shape();
			addChild(_mask);
			
			this.mask=_mask;
			
			textColor=0;
			_glowFilter=new GlowFilter(0x00ff00,1,3,3,3);
			
			if(stage)
			{
				onAddedToStageHandler();
			}
			else
			{
				addEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);
			}
		}
		
		private function onAddedToStageHandler(e:Event=null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);
			
			addEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);
			
			addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
			addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
		}
		
		private function onRemovedFromStageHandler(e:Event):void
		{
			removeEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);
			removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
			removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
		}
		
		private function onMouseOutHandler(e:MouseEvent):void
		{
			removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
			addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
			
			filters=null;
		}
		
		private function onMouseOverHandler(e:MouseEvent):void
		{
			removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
			addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
			
			filters=[_glowFilter];
		}
		
		protected override function refreshBackground():void
		{
			this.graphics.clear();
			
			this.graphics.beginFill(0x00ff00,.2);
			this.graphics.drawRect(0,0,width,height);	
			this.graphics.endFill();
			
			if(_isDrawBorder)
			{
				this.graphics.lineStyle(1);
				this.graphics.moveTo(0,0);
				this.graphics.lineTo(width-1,0);
				this.graphics.lineTo(width-1,height-1);
				this.graphics.lineTo(0,height-1);
				this.graphics.lineTo(0,0);
			}
			
			_mask.graphics.clear();
			
			_mask.graphics.beginFill(0x00ff00,.2);
			_mask.graphics.drawRect(0,0,width,height);	
			_mask.graphics.endFill();
		}
		
		public override function toString():String
		{
			return "Option ["+_data+"]";
		}
	}
}
OptionsList类:

package
{
	import controlsEvents.OptionsListEvent;
	
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.utils.Dictionary;
	/**
	 * 多选项选择框列表类
	 * @author Jave.Lin
	 */
	public class OptionsList extends Control
	{
		private var _itemsContainer:Panel;//子项容器
		private var _itemsControlDic:Dictionary;//子顶控制列表
		private var _isShow:Boolean=true;//是否显示
		private var _selectedItem:Option;
		private var _selectedIndex:int;
		
		private var _items:Vector.;//子项所有数据
		
		public function get items():Vector.
		{
			return _items;
		}
		//获取当前选中的子项控件,里面包括数据
		public function get selectedItem():Option
		{
			return _selectedItem;
		}
		//获取当前选中子项的索引
		public function get selectedIndex():int
		{
			return _selectedIndex;
		}
		//设置当前选中子项的索引
		public function set selectedIndex(value:int):void
		{
			if(_selectedIndex!=value)
			{
				if(value>_items.length-1)
				{
					throw new Error("set OptionsList.selectedIndex error,value:"+value);
				}
				if(value            
关注
打赏
1664331872
查看更多评论
0.1661s