startDrag()
方法,它比较简单,但限制较多。按下鼠标按键时,将调用要拖动的显示对象的
startDrag()
方法。松开鼠标按键时,将调stopDrag()
方法。做个例子代码如下:{
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class drawDrag extends Sprite
{
var myRect:Sprite = new Sprite();
var myCircle:Sprite = new Sprite();//创建Sprite实例
public function drawDrag():void
{
//矩形的填充色
myRect.graphics.beginFill(0x0000FF);
//绘制矩形,参数依次是 坐标轴x,坐标轴y,矩形长度,矩形的宽
myRect.graphics.drawRect(200,200,20,15);
this.addChild(myRect);//画布上面加载矩形
myCircle.graphics.beginFill(0x33FF33);
myCircle.graphics.drawCircle(100,100,20);
this.addChild(this.myCircle);
//添加元素事件
myCircle.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
myCircle.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
myRect.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
myRect.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
}
//触发鼠标mouseDown事件开始拖拽
function mouseDown(event:MouseEvent):void
{
event.target.startDrag();
}
//触发鼠标mouseUp事件停止拖拽
function mouseUp(event:MouseEvent):void
{
event.target.stopDrag();
}
}
}
startDrag()
拖动一个项目。如果正在拖动一个显示对象,然后对另一个显示对象调用了
startDrag()
方法,则第一个显示对象会立即停止跟随鼠标。mouseMove
事件的侦听器来订阅。然后,每次鼠标移动时都会调用此函数,它将使所拖动的对象跳到鼠标所在的 x,y
坐标。松开鼠标按键后,取消此函数作为侦听器的订阅,这意味着鼠标移动时不再调用该函数且对象停止跟随鼠标光标。下面是演示说明此技术的一些代码:{
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.ui.Mouse;
public class drawDrag2 extends Sprite
{
var myCircle:Sprite = new Sprite();
var offsetX:Number;
var offsetY:Number;
var myRect:Sprite = new Sprite();
var draggedObject:DisplayObject;
public function drawDrag2()
{
//圆的填充色
myCircle.graphics.beginFill(0xFFFF33);
myRect.graphics.beginFill(0x3333CC);
//圆的初始化位置
myCircle.graphics.drawCircle(150,150,20);
myRect.graphics.drawRect(300,200,30,20);
//加载圆形
this.addChild(myCircle);
this.addChild(myRect);
myRect.addEventListener(MouseEvent.MOUSE_DOWN,startDraging);
myRect.addEventListener(MouseEvent.MOUSE_UP,stopDraging);
myCircle.addEventListener(MouseEvent.MOUSE_DOWN,startDraging);
myCircle.addEventListener(MouseEvent.MOUSE_UP,stopDraging);
}
public function startDraging(event:MouseEvent):void
{
draggedObject = DisplayObject(event.target);//实现拖拽空间放在最上端
//记录鼠标按下时光标的位置和移动图形的xy,求出他们之间的偏移量
offsetX =event.stageX - draggedObject.x;
offsetY = event.stageY - draggedObject.y;
stage.addChild(draggedObject);
//开始监听mouseMove事件
stage.addEventListener(MouseEvent.MOUSE_MOVE,dragCircle);
}
public function stopDraging(event:MouseEvent):void
{
//停止监听mouseMove事件
stage.removeEventListener(MouseEvent.MOUSE_MOVE,dragCircle);
}
//移动鼠标执行该函数
public function dragCircle(event:MouseEvent):void
{
//确定当前图形的xy坐标值
draggedObject.x = event.stageX - offsetX;
draggedObject.y = event.stageY - offsetY;
event.updateAfterEvent();//刷新屏幕
}
}
}