| Refresh | Home EGTry.com

use mouse move to translate display object


MoveTranslate.as

package {
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.Point;

	//when the mouse is down, moving mouse would move the sprite
	public class MoveTranslate extends Sprite
	{
		private var globalPoint:Point;
		private var dragStart:Boolean=false;
		
		private var sprite:Sprite;
		public function MoveTranslate()
		{
			sprite=createGrid();

			sprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
			sprite.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
			sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
			addChild(sprite);
			
			
		}
		
		private function mouseDown(event:MouseEvent):void {
			trace("mouseDown: ("+event.localX+", "+event.localY+")");
			this.dragStart=true;
			globalPoint=sprite.localToGlobal(new Point(event.localX, event.localY));
		}
		
		private function mouseUp(event:MouseEvent):void {
			trace("mouseUp: ("+event.localX+", "+event.localY+")");
			this.dragStart=false;
		}
		
		private function mouseMove(event:MouseEvent):void {
			
			if (dragStart) {
				var gPoint:Point=sprite.localToGlobal(new Point(event.localX, event.localY));
				var diffx:Number=gPoint.x-globalPoint.x;
				var diffy:Number=gPoint.y-globalPoint.y;

				trace("before (x,y) "+sprite.x+", "+sprite.y);
				sprite.x +=diffx;
				sprite.y +=diffy;
				trace("after (x,y) "+sprite.x+", "+sprite.y);
				globalPoint=gPoint;
			}
		}
		

		
		private function createGrid():Sprite {
			var sprite:Sprite=new Sprite();
			var g:Graphics=sprite.graphics;
			g.beginFill(0xff0000,1);
			g.drawRect(0,0,400,100);
			g.endFill()
			sprite.scaleX=0.5;
			return sprite;
		}
		

	}
}