刚刚写了个元件左右拖动demo,记录一下,以便后续查看。是通过startDrag()这个方法来进行元件拖动的。

   通常默认直接使用mc.startDrag()方法来进行拖动。


以下为adobe官方的api:

startDrag

()
方法


public       function       startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void


语言版本: ActionScript 3.0
运行时版本: Flash Player 9, AIR 1.0, Flash Lite 4



允许用户拖动指定的 Sprite。Sprite 将一直保持可拖动,直到通过调用 Sprite.stopDrag() 方法来明确停止,或直到将另一个 Sprite 变为可拖动为止。在同一时间只有一个 Sprite 是可拖动的。

三维显示对象跟随指针,Sprite.startDrag() 将在由显示对象定义的三维平面中移动对象。或者,如果显示对象为二维对象和三维对象的子对象,则二维对象将在由三维父对象定义的三维平面中移动。


参数


lockCenter:Boolean (default = false) — 指定将可拖动的 sprite 锁定到指针位置中心 (true),还是锁定到用户第一次单击该 sprite 的位置 (false)。

bounds:Rectangle (default = null) — 相对于 Sprite 父级的坐标的值,用于指定 Sprite 约束矩形。


具体步骤:

1、通常flash cs5创建一个fla

2、创建元件,取名为RectMc,添加一个1100*400的矩形。

flash as3鼠标左右拖动元件_startDrag


3、回到场景,将刚刚创建的元件拖动到场景中,实例名为“mc”


flash as3鼠标左右拖动元件_stopDrag_02

4、在第一帧右击添加动作,或按“F9”进入as3代码编写。


import flash.events.MouseEvent;
import flash.geom.Rectangle;
//注册鼠标按下事件
mc.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
//注册鼠标松开事件
mc.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
//创建矩形,参数:1,2表示x,y轴坐标,3,4表示宽度,和高度。
var rect:Rectangle = new Rectangle(-550,mc.y,550,0);
function mouseDown(e:MouseEvent):void
{
    //添加拖动,
    //false表示跟随鼠标移动,rect表示可以移动的范围,即x轴方向移动
    mc.startDrag(false,rect);
                                      
}
function mouseUp(e:MouseEvent):void
{
    mc.stopDrag();
}

以上就完成了元件左右拖动。