首先監聽要移動的Clip的MouseDown事件。
當Clip的MouseDown事件被觸發後,監聽Stage的MouseUp。
當Stage的MouseMove事件被觸發後,叫用Clip的StartDrag方法。
當Stage的MouseUp事件被觸發後,移除Stage的MouseUp與叫用Clip的StopDrag方法。
import flash.display.Sprite;
import flash.events.MouseEvent;
/**
* Mouse Move Drag Sample - use startDrag/stopDrag method
*/
public class MouseMoveDrag1 extends Sprite
{
private var ball:Ball;
public function MouseMoveDrag1()
{
init();
}
private function init():void
{
ball = new Ball;
ball.x = 100;
ball.y = 100;
addChild(ball);
ball.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
private function onMouseDown(evt:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
ball.startDrag(true);
}
private function onMouseUp(evt:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
ball.stopDrag();
}
}
StartDrag的語法:
startDrag(鎖定中心:boolean,移動邊界:Rectangle);
鎖定中心為是否將拖拽位置的起始點設成物件的中心。
移動邊界為是否設定物件的移動範圍。
如:
var rect:Rectangle = new Rectangle(50, 50, 300, 300);
ball.StartDrag(false, rect);
參考書目:Keith Peters.《Function Actionscript 3.0 Animation》.Friends of ED
沒有留言:
張貼留言