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

📄 movablecomponent.as

📁 flex书效果代码
💻 AS
字号:
package com.mh.movable.core
{
	import com.mh.movable.event.MovableEvent;
	
	import flash.events.MouseEvent;
	
	import mx.containers.Canvas;
	import mx.core.ScrollPolicy;
	
	public class MovableComponent extends Canvas
	{
		private const MIN_SIZE:Number = 15;
		
		public var maintainAspectRatio:Boolean = true;
		
		
		public function MovableComponent()
		{
			this.clipContent = false;
			this.addEventListener( MouseEvent.MOUSE_DOWN, mouseDownHandler );
			
			this.horizontalScrollPolicy = ScrollPolicy.OFF;
			this.verticalScrollPolicy = ScrollPolicy.OFF;
		}
		
		
		private function mouseDownHandler( event:MouseEvent ):void
		{
			event.stopPropagation();
						
			this.dispatchEvent( new MovableEvent( MovableEvent.SELECT_COMPONENT ) ); 
			this.dispatchEvent( new MovableEvent( MovableEvent.MOVE_COMPONENT ) );
		}
		
		public function clone():Object
		{
			var tmp:MovableComponent = new MovableComponent();
			
			tmp.x = x;
			tmp.y = y;
			tmp.width = width;
			tmp.height = height;
			
			return tmp;
		}
		
		
		public function moveCenter( deltaX:Number, deltaY:Number ):void
		{
			x += deltaX;
			y += deltaY;
		}
		
		public function resizeLeft( delta:Number ):void
		{
			if( delta>0 && width < MIN_SIZE )
				return;
				
			x += delta;
			width -= delta;
		}
		public function resizeRight( delta:Number ):void
		{
			if( delta<0 && width<MIN_SIZE )
				return;
				
			width += delta;
		}
		public function resizeTop( delta:Number ):void
		{
			if( delta>0 && height < MIN_SIZE )
				return;
				
			y += delta;
			height -= delta;
		}
		public function resizeBottom( delta:Number ):void
		{
			if( delta<0 && height < MIN_SIZE )
				return;
				
			height += delta;
		}
		
		public function resizeTopLeft( deltaX:Number, deltaY:Number ):void
		{
			if( maintainAspectRatio )
			{
				if( Math.abs(deltaX) > Math.abs(deltaY) ) // resize according to largest
					deltaY = deltaX*(height/width);
				else
					deltaX = deltaY*(width/height);
			}
				
			if( (deltaX>0 && width < MIN_SIZE) || (deltaY>0 && height < MIN_SIZE) )
				return;
				
			resizeLeft( deltaX );
			resizeTop( deltaY );
		}
		
		public function resizeTopRight( deltaX:Number, deltaY:Number ):void
		{
			if( maintainAspectRatio )
			{
				if( Math.abs(deltaX) > Math.abs(deltaY) ) // resize according to largest
					deltaY = deltaX*(height/width)*-1;
				else
					deltaX = deltaY*(width/height)*-1;
			}

			if( (deltaX<0 && width < MIN_SIZE) || (deltaY>0 && height < MIN_SIZE) )
				return;
				
			resizeRight( deltaX );
			resizeTop( deltaY );
		}
		
		public function resizeBottomLeft( deltaX:Number, deltaY:Number ):void
		{
			if( maintainAspectRatio )
			{
				if( Math.abs(deltaX) > Math.abs(deltaY) ) // resize according to largest
					deltaY = deltaX*(height/width)*-1;
				else
					deltaX = deltaY*(width/height)*-1;
			}
				
			if( (deltaX>0 && width < MIN_SIZE) || (deltaY<0 && height < MIN_SIZE) )
				return;
				
			resizeLeft( deltaX );
			resizeBottom( deltaY );
		}

		public function resizeBottomRight( deltaX:Number, deltaY:Number ):void
		{
			if( maintainAspectRatio )
			{
				if( Math.abs(deltaX) > Math.abs(deltaY) ) // resize according to largest
					deltaY = deltaX*(height/width);
				else
					deltaX = deltaY*(width/height);
			}
				
			if( (deltaX<0 && width<MIN_SIZE) || (deltaY<0 && height<MIN_SIZE) )
				return;
				
			resizeRight( deltaX );
			resizeBottom( deltaY );
		}
		
	}
}

⌨️ 快捷键说明

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