ドラッグの雛形
startDrag() は、マウスが stage から外れるとうまくいかない。
ドラッグの制限も矩形のみということで、自前でやるときの雛形。
こんな感じ。
http://park.geocities.jp/mxmlc/misc/DraggableButtonTest.html
// DraggableButton.as package { import flash.display.*; import flash.events.*; import flash.geom.*; public class DraggableButton extends Sprite { private var delta:Point = new Point(); private var a:Point = new Point(); public var limit:Function = function(pt:Point):void {}; public function DraggableButton(c:uint, r:Number):void { graphics.beginFill(c); graphics.drawCircle(0, 0, r); graphics.endFill(); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } private function onMouseDown(ev:MouseEvent):void { delta.x = x - parent.mouseX; delta.y = y - parent.mouseY; stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMove); stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUp); } private function stageMouseMove(ev:MouseEvent):void { a.x = parent.mouseX + delta.x; a.y = parent.mouseY + delta.y; limit(a); x = a.x; y = a.y; dispatchEvent(new Event(Event.CHANGE)); ev.updateAfterEvent(); } private function stageMouseUp(ev:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, stageMouseMove); stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUp); } } }