2009年3月31日 星期二

拖拽影片 - 使用 startDrag

使用時機:一次拖拽單一DisplayObject

首先監聽要移動的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

沒有留言:

張貼留言