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

📄 simpledisplayobjectboundsutil.as

📁 Flex三维特效 examples - see DistortionExamples.mxml bin - Use the included SWC component for productio
💻 AS
字号:
package com.adobe.ac.util
{
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
			
	public class SimpleDisplayObjectBoundsUtil
	{
		public var offsetWidth : Number = 200;
		public var offsetHeight : Number = 200;
		
		public function getBoundsForOffsetRect( target : DisplayObject, offsetRect : Rectangle ) : Rectangle
		{
			var actualOffsetRect : Rectangle = computeFilterBounds( target );
			if( offsetRect == null ) return actualOffsetRect;
			return addToExistingOffsetRect( actualOffsetRect, offsetRect );	
		}
		
		public function getBounds( target : DisplayObject ) : Rectangle
		{
			return computeFilterBounds( target );
		}
		
		protected function computeFilterBounds( target : DisplayObject ) : Rectangle
		{
			var x : Number = 0;
			var y : Number = 0;
			var width : Number = target.width;
			var height : Number = target.height;
			var halfOffsetWidth : Number = offsetWidth / 2;
			var halfOffsetHeight : Number = offsetHeight / 2;
			var bitmap : BitmapData = new BitmapData( width + offsetWidth, height + offsetHeight, true, 0x00000000 );
			var m : Matrix = new Matrix();
			m.translate( halfOffsetWidth, halfOffsetHeight );
			bitmap.draw( target, m );
			var actualBounds : Rectangle = bitmap.getColorBoundsRect( 0xFF000000, 0x00000000, false );
			
			actualBounds.x = actualBounds.x - halfOffsetWidth;
			actualBounds.y = actualBounds.y - halfOffsetHeight;
			
			bitmap.dispose();
			return actualBounds;
		}		
		
		protected function addToExistingOffsetRect( newOffsetRect : Rectangle, existingOffsetRect : Rectangle ) : Rectangle
		{
			if( isNaN( existingOffsetRect.x ) )
			{
				existingOffsetRect.x = newOffsetRect.x;
			}
			if( isNaN( existingOffsetRect.y ) )
			{
				existingOffsetRect.y = newOffsetRect.y;
			}
			if( isNaN( existingOffsetRect.width ) )
			{
				existingOffsetRect.width = newOffsetRect.width;
			}
			if( isNaN( existingOffsetRect.height ) )
			{
				existingOffsetRect.height = newOffsetRect.height;
			}
			return existingOffsetRect;	
		}
	}
}

⌨️ 快捷键说明

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