⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 legenditem.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.vis.legend
{
	import flare.display.RectSprite;
	import flare.display.TextSprite;
	import flare.util.Shapes;
	
	import flash.display.Graphics;
	import flash.display.Shape;

	/**
	 * An item in a discrete legend consisting of a label and
	 * an icon indicating color, shape, and/or size.
	 */
	public class LegendItem extends RectSprite
	{
		private var _value:Object;
		
		private var _icon:Shape;
		private var _iconLineWidth:Number = 2;
		private var _label:TextSprite;
		
		private var _iconSize:Number = 12;
		private var _maxIconSize:Number = 12;
		private var _margin:Number = 5;
		
		private var _shape:String;
		private var _color:uint;
		
		private var _selected:Boolean = false;
		
		// -- Properties ------------------------------------------------------
		
		/** The data value represented by this legend item. */
		public function get value():Object { return _value; }
		public function set value(v:Object):void { _value = v; }
		
		/** Shape presenting this legend item's icon. */
		public function get icon():Shape { return _icon; }
		/** TextSprite presenting this legend item's label. */
		public function get label():TextSprite { return _label; }
		
		/** The label text. */
		public function get text():String { return _label.text; }
		public function set text(t:String):void {
			if (t != _label.text) { _label.text = t; dirty(); }
		}
		
		/** Line width to use within the icon. */
		public function get iconLineWidth():Number { return _iconLineWidth; }
		public function set iconLineWidth(s:Number):void {
			if (s != _iconLineWidth) { _iconLineWidth = s; dirty(); }
		}
		
		/** Size parameter for icon drawing. */
		public function get iconSize():Number { return _iconSize; }
		public function set iconSize(s:Number):void {
			if (s != _iconSize) { _iconSize = s; dirty(); }
		}
		
		/** Maximum size parameter for icon drawing. */
		public function get maxIconSize():Number { return _maxIconSize; }
		public function set maxIconSize(s:Number):void {
			if (s != _maxIconSize) { _maxIconSize = s; dirty(); }
		}
		
		/** Margin value for padding within the legend item. */
		public function get margin():Number { return _margin; }
		public function set margin(m:Number):void {
			if (m != _margin) { _margin = m; dirty(); }
		}
		
		/** The inner width of this legend item. */
		public function get innerWidth():Number {
			return 2*_margin + _maxIconSize + 
				(_label.text.length>0 ? _margin + _label.width : 0);
		}
		/** The inner height of this legend item. */
		public function get innerHeight():Number {
			return Math.max(2*_margin + _maxIconSize, _label.height);
		}
		
		/** Flag indicating if this legend item has been selected. */
		public function get selected():Boolean { return _selected; }
		public function set selected(b:Boolean):void { _selected = b; }
		
		// -- Methods ---------------------------------------------------------
		
		/**
		 * Creates a new LegendItem.
		 * @param text the label text
		 * @param color the color of the label icon
		 * @param shape a shape drawing function for the label icon
		 * @param iconSize a size parameter for drawing the label icon
		 */
		public function LegendItem(text:String=null, color:uint=0xff888888,
								   shape:String=null, iconSize:Number=NaN)
		{
			addChild(_icon = new Shape());
			addChild(_label = new TextSprite(text));
			
			// init background
			super(0,0,0, 2*_margin + _iconSize, 13, 13);
			lineColor = 0;
			fillColor = 0;
			
			// init label
			_label.horizontalAnchor = TextSprite.LEFT;
			_label.verticalAnchor = TextSprite.MIDDLE;
			_label.mouseEnabled = false;
			
			// init icon
			_color = color;
			_shape = shape;
			if (!isNaN(iconSize)) _iconSize = iconSize;
		}
		
		/** @inheritDoc */
		public override function render():void
		{			
			// layout label
			_label.x = 2*_margin + _maxIconSize;
			_label.y = innerHeight / 2;
			// TODO compute text abbrev as needed?
			
			// layout icon
			_icon.x = _margin + _maxIconSize/2;
			_icon.y = innerHeight / 2;
			if (_label.textMode != TextSprite.EMBED) _icon.y -= 1;
			
			// render icon
			var draw:Function = _shape ? Shapes.getShape(_shape) : null;
			var g:Graphics = _icon.graphics;
			g.clear();
			if (draw != null) {
				g.lineStyle(_iconLineWidth, _color, 1);
				draw(g, _iconSize/2);
			} else {
				g.beginFill(_color);
				Shapes.drawCircle(g, _iconSize/2);
				g.endFill();
			}
			
			_h = innerHeight;
			super.render();
		}
		
	} // end of class LegendItem
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -