李大仁博客

AS3实现对对象(DisplayObject)的鼠标拖动(Drag)跟随

flash中对对象的鼠标拖动跟随是很常用的效果,下面是简单的AS3代码实现一下代码与大家常用的方法有所不同的是,在鼠标拖动显示对象的时候flash对象的动画播放是不会被打断的和空白,相比flash自带的Drag方法比较符合用户需要,通过在对象移动时记录位移之后再赋值给复制后的新对象实现图像的唯一的实现。

//私有变量
private class ObjectDragging
{
	private var offsetX:Number;
	private var offsetY:Number;
	private var draggedObject:*;

	public function ObjectDragging(Obj:*)
	{
		addObjectDrag(Obj);
	}

	priavte 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();
	}
}
Exit mobile version