zoomer.as

来自「QS我也没用过」· AS 代码 · 共 54 行

AS
54
字号


package qs.controls
{
	import flash.geom.Matrix;
	
	public class Zoomer extends Wrapper
	{
		private var _maintainAspectRatio:Boolean = true;
		public function set maintainAspectRatio(value:Boolean):void
		{
			if(_maintainAspectRatio != value)
			{
				_maintainAspectRatio = value;
				invalidateDisplayList();
			}
		}
		public function get maintainAspectRatio():Boolean
		{
			return _maintainAspectRatio;
		}

		public function Zoomer()
		{
		}

		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			if(child == null)
				return;
				
			if(_maintainAspectRatio)
			{
				child.setActualSize(child.getExplicitOrMeasuredWidth(),child.getExplicitOrMeasuredHeight());
				var m:Matrix = child.transform.matrix;
				var scale:Number= Math.min(unscaledWidth/child.getExplicitOrMeasuredWidth(),unscaledHeight/child.getExplicitOrMeasuredHeight());
				m.a = scale;
				m.d = scale;
				child.transform.matrix = m;
				child.move( unscaledWidth/2 - child.getExplicitOrMeasuredWidth()*scale/2,
							unscaledHeight/2 - child.getExplicitOrMeasuredHeight()*scale/2);
			}
			else
			{
				child.setActualSize(child.getExplicitOrMeasuredWidth(),child.getExplicitOrMeasuredHeight());
				var m:Matrix = child.transform.matrix;
				m.a = unscaledWidth/child.getExplicitOrMeasuredWidth();
				m.d = unscaledHeight/child.getExplicitOrMeasuredHeight();
				child.transform.matrix = m;
				child.move(0,0);
			}
		}
	}
}

⌨️ 快捷键说明

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