在 Flash 中,對象的滑鼠拖曳跟隨是一個常見的效果。下面是一段簡單的 AS3 代碼,與大家常用的方法有所不同的是,在滑鼠拖曳顯示對象的時候,Flash 對象的動畫播放不會被打斷和空白。相比 Flash 自帶的 Drag 方法,這種方法更符合用戶的需求。通過在對象移動時記錄位移,然後再賦值給複製後的新對象,實現圖像的唯一實現。
// 私有變量
private class ObjectDragging
{
private var offsetX;
private var offsetY;
private var draggedObject:*;
public function ObjectDragging(Obj:\*)
{
addObjectDrag(Obj);
}
private function addObjectDrag(Obj:\*):void {
Obj.addEventListener(MouseEvent.MOUSE\_DOWN, startDragging);
Obj.addEventListener(MouseEvent.MOUSE\_UP, stopDragging);
}
//開始移動
private function startDragging(event:MouseEvent):void {
//記錄被拖動的對象
draggedObject = DisplayObject(event.target);
//記錄滑鼠偏移
offsetX = event.stageX - draggedObject.x;
offsetY = event.stageY - draggedObject.y;
//添加新的對象
stage.addChild(draggedObject);
//監聽滑鼠移動事件
stage.addEventListener(MouseEvent.MOUSE\_MOVE, dragObject);
}
//停止拖動
private function stopDragging(event:MouseEvent):void {
//移除滑鼠移動事件
stage.removeEventListener(MouseEvent.MOUSE\_MOVE, dragObject);
}
private function dragObject(event:MouseEvent):void {
//設置新的座標
draggedObject.x = event.stageX - offsetX;
draggedObject.y = event.stageY - offsetY;
//更新事件
event.updateAfterEvent();
}
}