今天用as做了过一个最简单的拖动,代码没有任何的复杂性,添加了详细的注释,只要有as基础的都能直接看懂。
完整代码如下:
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class drag extends Sprite
{
//拖动对象一
private var box:Sprite;
//拖动对象二
private var box2:Sprite;
//鼠标在拖动对象内的偏移量
private var offsetX:Number;
private var offsetY:Number;
//拖动的对象
private var dragObject:DisplayObject;
public function drag()
{
//实例拖动对象一
box = new Sprite();
box.graphics.beginFill(0xff0000);
box.graphics.drawRect(100,100,50,50);
box.graphics.endFill();
this.addChild(box);
//实例拖动对象二
box2 = new Sprite();
box2.graphics.beginFill(0x0000ff);
box2.graphics.drawRect(155,155,50,50);
box2.graphics.endFill();
this.addChild(box2);
//给拖动对象注册拖动事情
box.addEventListener(MouseEvent.MOUSE_DOWN,dragStart);
box2.addEventListener(MouseEvent.MOUSE_DOWN,dragStart);
//舞台事件,用于移除拖动对象事件
stage.addEventListener(MouseEvent.MOUSE_UP,dragStop);
}
//开始拖动
private function dragStart(e:MouseEvent):void
{
//获得拖动的目标对象
dragObject = e.target as DisplayObject;
//记录偏移量
offsetX = e.localX; // e.stageX - dragObject.x;
offsetY = e.localY; // e.stageY - dragObject.y;
//把目标对象设置在舞台的最顶端
stage.addChild(dragObject);
//舞台事件,注册鼠标移动事件
stage.addEventListener(MouseEvent.MOUSE_MOVE,dragging);
}
//拖动方法
private function dragging(e:MouseEvent):void
{
//设置拖动目标对象的位置
dragObject.x = e.stageX-offsetX;
dragObject.y = e.stageY-offsetY;
}
//停止拖动
private function dragStop(e:MouseEvent):void
{
//除多拖动事件
stage.removeEventListener(MouseEvent.MOUSE_MOVE,dragging);
}
}
}