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