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

📄 cartesianaxes.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.vis.axis
{
	import flare.animate.Transitioner;
	import flare.display.RectSprite;
	import flare.display.TextSprite;
	import flare.vis.Visualization;
	
	import flash.geom.Rectangle;
	
	/**
	 * Axes class representing 2D Cartesian (X-Y) axes.
	 */
	public class CartesianAxes extends Axes
	{
		// -- Properties ------------------------------------------------------
				
		private var _xaxis:Axis;
		private var _yaxis:Axis;
		private var _xline:AxisGridLine;
		private var _yline:AxisGridLine;
		private var _border:RectSprite;
		private var _xGridClip:RectSprite;
		private var _yGridClip:RectSprite;
		
		/** Flag indicating if the x-origin line should be shown. */
		public var showXLine:Boolean;
		/** Flag indicating if the y-origin line should be shown. */
		public var showYLine:Boolean;
		/** Determines if the x-axis should be in reverse order. */
		public var xReverse:Boolean = false;
		/** Determines if the y-axis should be in reverse order. */
		public var yReverse:Boolean = false;
		
		/** The x-axis. */
		public function get xAxis():Axis { return _xaxis; }
		/** The y-axis. */
		public function get yAxis():Axis { return _yaxis; }
		/** Grid line for the origin along the x-axis. */
		public function get xLine():AxisGridLine { return _xline; }
		/** Grid line for the origin along the y-axis. */
		public function get yLine():AxisGridLine { return _yline; }
				
		/** The x-coordinate of the axes' origin point. */
		public function get originX():Number { return _xaxis.originX; }
		/** The y-coordinate of the axes' origin point. */
		public function get originY():Number { return _yaxis.originY; }
		
		/** Flag indicating if a border for the axes should be shown. */
		public function get showBorder():Boolean { return _border.visible; }
		public function set showBorder(b:Boolean):void { _border.visible = b; }
		
		/** The axes border color. */
		public function get borderColor():uint { return _border.lineColor; }
		public function set borderColor(c:uint):void { _border.lineColor = c; }
		
		/** The line width of the axes border. */
		public function get borderWidth():Number { return _border.lineWidth; }
		public function set borderWidth(w:Number):void { _border.lineWidth = w; }
		
				
		// -- Methods ---------------------------------------------------------
		
		/**
		 * Creates new CartesianAxes.
		 * @param vis the visualization the axes correspond to.
		 */
		public function CartesianAxes(vis:Visualization=null) {
			_vis = vis;
			
			addChild(_xaxis = new Axis());
			addChild(_yaxis = new Axis());
			addChild(_xline = new AxisGridLine());
			addChild(_yline = new AxisGridLine());
			addChild(_border = new RectSprite());
			addChild(_xGridClip = new RectSprite());
			addChild(_yGridClip = new RectSprite());
			
			// set names
			_xaxis.name = "_xaxis";
			_yaxis.name = "_yaxis";
			_xline.name = "_xline";
			_yline.name = "_yline";
			_border.name = "_border";
			
			// set label anchors
			_xaxis.horizontalAnchor = TextSprite.CENTER;
			_xaxis.verticalAnchor   = TextSprite.TOP;
			_yaxis.horizontalAnchor = TextSprite.RIGHT;
			_yaxis.verticalAnchor   = TextSprite.MIDDLE;
            
            // set default label offsets
            _xaxis.labelOffsetX =  0; _xaxis.labelOffsetY = 8;
            _yaxis.labelOffsetX = -8; _yaxis.labelOffsetY = 0;

            // set default gridline caps
            _xaxis.lineCapX1 = _xaxis.lineCapX2 = 0;
            _xaxis.lineCapY1 = _xaxis.lineCapY2 = 0;
            _yaxis.lineCapX1 = _yaxis.lineCapX2 = 0;
            _yaxis.lineCapY1 = _yaxis.lineCapY2 = 0;

            // set default gridline colors
            _xaxis.lineColor = 0xd8d8d8;
            _yaxis.lineColor = 0xd8d8d8;

            // set default line settings
            _xline.lineColor = 0xcccccc;
            _yline.lineColor = 0xcccccc;
            
            // set up border
            _border.lineColor = 0xffd8d8d8;
            _border.fillColor = 0x00ffffff;
            
            // set up clipping masks
            _xGridClip.lineColor = 0;
            _xGridClip.fillColor = 0xffffffff;
            _yGridClip.lineColor = 0;
            _yGridClip.fillColor = 0xffffffff;
		}
		
		/** @inheritDoc */
		public override function update(trans:Transitioner=null):Transitioner
        {
        	var t:Transitioner = (trans!=null ? trans : Transitioner.DEFAULT);
        	var o:Object;
        	var b:Rectangle = layoutBounds;
        	
        	// set x-axis position
        	if (xReverse) {
        		_xaxis.x1 = b.right; _xaxis.y1 = b.bottom;
        		_xaxis.x2 = b.left;  _xaxis.y2 = b.bottom;
        	} else {
        		_xaxis.x1 = b.left;  _xaxis.y1 = b.bottom;
        		_xaxis.x2 = b.right; _xaxis.y2 = b.bottom;
        	}

			// set y-axis position
			if (yReverse) {
				_yaxis.x1 = b.left;  _yaxis.y1 = b.top;
        		_yaxis.x2 = b.left;  _yaxis.y2 = b.bottom;
   			} else {
   				_yaxis.x1 = b.left;  _yaxis.y1 = b.bottom;
        		_yaxis.x2 = b.left;  _yaxis.y2 = b.top;
   			}
        	
        	// gridline length
        	_xaxis.lineLengthX = 0;
        	_xaxis.lineLengthY = -b.height;
        	_yaxis.lineLengthX = b.width;
        	_yaxis.lineLengthY = 0;

			// update axes
			_xaxis.update(t);
			_yaxis.update(t);

			// update x-axis origin line
			var yx:Number = _yaxis.offsetX(0);
			var yy:Number = _yaxis.offsetY(0);
			var ys:Boolean = showXLine && yx >= 0 && yx <= b.width;
			o = t.$(_xline);
			o.x1 = _xaxis.x1 + yx;
			o.y1 = _xaxis.y1 + yy;
			o.x2 = _xaxis.x2 + yx;
			o.y2 = _xaxis.y2 + yy;
			o.alpha = ys ? 1 : 0;
			
			// update y-axis origin line
			var xx:Number = _xaxis.offsetX(0);
			var xy:Number = _xaxis.offsetY(0);
			var xs:Boolean = showYLine && xy >= 0 && xy <= b.height;
			o = t.$(_yline);
			o.x1 = _yaxis.x1 + xx;
			o.y1 = _yaxis.y1 + xy;
			o.x2 = _yaxis.x2 + xx;
			o.y2 = _yaxis.y2 + xy;
			o.alpha = xs ? 1 : 0;

			// update axis border
			o = t.$(_border);
			o.x = b.x;
			o.y = b.y;
			o.w = b.width;
			o.h = b.height;
			
			// set the gridline clipping regions			
			o = t.$(_xGridClip);
			o.x = b.x;
			o.y = b.y - _xaxis.lineCapY2;
			o.w = b.width + 1;
			o.h = b.height + _xaxis.lineCapY1 + _xaxis.lineCapY2;
			_xaxis.gridLines.mask = _xGridClip;
			
			o = t.$(_yGridClip);
			o.x = b.x - _yaxis.lineCapX1;
			o.y = b.y;
			o.w = b.width + _yaxis.lineCapX1 + _yaxis.lineCapX2;
			o.h = b.height + 1;
			_yaxis.gridLines.mask = _yGridClip;
			
            return trans;
        }
		
	} // end of class CartesianAxes
}

⌨️ 快捷键说明

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