如何限制可以拖动动画片段的区域?

时间:2013-05-22 08:56:07

标签: actionscript-3 movieclip flash-cs6

我正在as3 / flash cs6中创建一个交互式地图。 目前,我已经让它放大和缩小,并被拖走。

但我的问题是,如何限制地图可以拖动的区域,所以你不能看到它外面的空白区域?

这是我的代码:

    import flash.events.MouseEvent;

    function initDragger(mc:MovieClip):void
    {
        mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
        mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);


    }

    function mouseDownHandler(e:MouseEvent):void
    {
        e.currentTarget.startDrag();

    }
    function mouseUpHandler(e:MouseEvent):void
    {
        e.currentTarget.stopDrag();

    }

    // Set up drag
    initDragger(map);

    zoomIn.addEventListener(MouseEvent.CLICK, mapzoomin);

    function mapzoomin(event:MouseEvent):void
    {
        if (map.scaleX < 10)
        {
            map.scaleX +=  1;
            map.scaleY +=  1;
        }

    }

    zoomOut.addEventListener(MouseEvent.CLICK, mapzoomout);

    function mapzoomout(event:MouseEvent):void
    {
        if (map.scaleX > 1)
        {
            map.scaleX -=  1;
            map.scaleY -=  1;
        }

    }

2 个答案:

答案 0 :(得分:0)

矩形尺寸应与可拖动项目的左上角相关。因此,如果你有一个100x100的地图和一个50x50的可视区域,那么矩形就是{x:-50,y:-50,宽度:50,高度:50}

答案 1 :(得分:0)

这样做的一个非常简单的方法是检查地图的x和y坐标是什么,并确保它们不会超出你想要的范围。
例如。
(假装你的舞台是200px宽和高)

stage.addEventListener(Event.ENTER_FRAME, update);

function update(e:Event)
{
    if(map.x > 0) map.x = 0;
    if(map.x < map.width - 200) map.x = map.width - 200;
    if(map.y > 0) map.y = 0;
    if(map.y < 0 - (map.height - 200)) map.y = 0 - (map.height - 200);
}

我没有测试过,但它应该是正确的。