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;
}
}
}