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

📄 matrixinterpolator.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.animate.interpolate
{
	import flash.geom.Matrix;
	
	/**
	 * Interpolator for <code>flash.geom.Matrix</code> values.
	 */
	public class MatrixInterpolator extends Interpolator
	{
		private var _startA:Number, _startB:Number, _startC:Number;
		private var _startD:Number, _startX:Number, _startY:Number;
		private var _rangeA:Number, _rangeB:Number, _rangeC:Number;
		private var _rangeD:Number, _rangeX:Number, _rangeY:Number;
		private var _cur:Matrix;
		
		/**
		 * Creates a new MatrixInterpolator.
		 * @param target the object whose property is being interpolated
		 * @param property the property to interpolate
		 * @param start the starting matrix value to interpolate from
		 * @param end the target matrix value to interpolate to
		 */
		public function MatrixInterpolator(target:Object, property:String,
		                                   start:Object, end:Object)
		{
			super(target, property, start, end);
		}
		
		/**
		 * Initializes this interpolator.
		 * @param start the starting value of the interpolation
		 * @param end the target value of the interpolation
		 */
		protected override function init(start:Object, end:Object) : void
		{
			var e:Matrix = Matrix(end), s:Matrix = Matrix(start);
			_cur = _prop.getValue(_target) as Matrix;
			if (_cur == null || _cur == s || _cur == e)
				_cur = e.clone();
			
			_startA = s.a;
			_startB = s.b;
			_startC = s.c;
			_startD = s.d;
			_startX = s.tx;
			_startY = s.ty;
			_rangeA = e.a  - _startA;
			_rangeB = e.b  - _startB;
			_rangeC = e.c  - _startC;
			_rangeD = e.d  - _startD;
			_rangeX = e.tx - _startX;
			_rangeY = e.ty - _startY;
		}
		
		/**
		 * Calculate and set an interpolated property value.
		 * @param f the interpolation fraction (typically between 0 and 1)
		 */
		public override function interpolate(f:Number) : void
		{
			_cur.a  = _startA + f * _rangeA;
			_cur.b  = _startB + f * _rangeB;
			_cur.c  = _startC + f * _rangeC;
			_cur.d  = _startD + f * _rangeD;
			_cur.tx = _startX + f * _rangeX;
			_cur.ty = _startY + f * _rangeY;
			_prop.setValue(_target, _cur);
		}
		
	} // end of class MatrixInterpolator
}

⌨️ 快捷键说明

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