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

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

}

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.