flash AS3.0 怎么设置元件在舞台的拖动范围。只能x轴左右移动。

黑色的元件能在粉色元件上面左右拖动不得上下拖动且不能超过粉色元件区域... 黑色的元件能在粉色元件上面左右拖动 不得上下拖动
且不能超过粉色元件区域
展开
 我来答
gjsgdhr
推荐于2016-04-24 · TA获得超过1800个赞
知道小有建树答主
回答量:665
采纳率:77%
帮助的人:466万
展开全部

很简单,侦听鼠标事件再做处理就可以了,下面是代码:

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

其实按照第一个回答者的方法用startDrag也可以,但是这个方法会导致在某些情况下一不小心按下右键会导致释放左键的效果失效,所以最好的方法还是用事件侦听~

希望能帮到你~

深圳市容大彩晶科技有限公司
2024-11-20 广告
作为深圳市容大彩晶科技有限公司的工作人员,对于公司广告机的功能有一定的了解。公司的广告机是否支持多语言显示,具体需根据产品型号和功能配置来确定。但一般而言,现代广告机通常具备多语言显示的功能,以适应不同国家和地区的需求。建议直接查阅产品说明... 点击进入详情页
本回答由深圳市容大彩晶科技有限公司提供
朴实又可爱的小桃花n
2014-03-17 · TA获得超过824个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:258万
展开全部
startDrag ()
方法

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

后面的bounds参数就是它的移动位置的限制,是一个矩形。
var bounds:Rectangle=new Rectangle(0,0,100,1)
Rectangle(x:Number = 0,
y:Number = 0, width:Number = 0, height:Number = 0)
例如mc.startDrag(false,new Rectangle(0,0,100,1).
表示mc这个元件在一个矩形内移动,这个矩形有左上角坐标在(0,0)位置。移动的长度为100,高度为1.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式