as3.0 在一个范围之内拖动

import flash.events.MouseEvent;
import flash.geom.Point;
import flash.display.MovieClip;

//假设你的黑色元件是black,粉色元件是powder
//此变量指示当前鼠标左键是否按下
var down:Boolean = false;
//此变量可以保存点击黑色元件的位置
var point:Point=new Point();
//侦听事件
var black:MovieClip
black.addEventListener(MouseEvent.MOUSE_DOWN,handle);
stage.addEventListener(MouseEvent.MOUSE_UP,handle);
//移动事件用stage侦听,也可以侦听ENTER_FRAME事件;
stage.addEventListener(MouseEvent.MOUSE_MOVE,handle);
function handle(e:MouseEvent):void {
    if (e.type == MouseEvent.MOUSE_DOWN) {
        down = true;
        black.startDrag(false)
    } else if (e.type==MouseEvent.MOUSE_UP) {
        down = false;
        black.stopDrag()
    } else if (e.type==MouseEvent.MOUSE_MOVE) {
        if (down==true) {
            //黑色元件随鼠标移动
            trace(black.transform.pixelBounds.size)
            //black.x = mouseX 
            //限定移动范围
            //因为我不确定你的元件是怎么安排坐标的,以下这么写适合所有情况
            if (black.transform.pixelBounds.left < powder.transform.pixelBounds.left) {
                black.x =powder.x
            } else if (black.transform.pixelBounds.right>powder.transform.pixelBounds.right) {
                black.x =powder.x+powder.width-black.width
            } else if (black.transform.pixelBounds.top<powder.transform.pixelBounds.top) {
                black.y=powder.y
            }else if (black.transform.pixelBounds.bottom>powder.transform.pixelBounds.bottom) {
                black.y=powder.y+powder.height-black.height
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/zqiang0803/p/11390008.html