banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

AS3實現對物件(DisplayObject)的滑鼠拖曳(Drag)跟隨

在 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();
}

}

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。