Home > 语言编程 > AS3实现对对象(DisplayObject)的鼠标拖动(Drag)跟随

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//私有变量
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();
	}
}
Categories: 语言编程 Tags: ,
  1. September 20th, 2009 at 18:38 | #1

    CG你QQ多少,有空回我邮箱里,多聊聊!

  2. Purpleen
    November 20th, 2009 at 10:15 | #2

    向你学到了很多东西`

  1. No trackbacks yet.