2013-05-22 42 views
0

我在製作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; 
     } 

    } 
+0

startDrag可以接受矩形(邊界),您可以在其中拖動項目。看看http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Sprite.html#startDrag%28%29 – Urosan

+0

好的,我明白了。那麼,我只是把界限和我的地圖一樣嗎? –

回答

0

矩形尺寸應在有關的可拖動項目的左上角。所以,如果你有一個100x100的地圖和一個50x50的可視區域,矩形將是{X:-50,Y:-50,寬度:50,高度:50}

0

一個非常簡單的做這將是方式檢查地圖的x和y座標是什麼,並確保它們不會超出你想要的。
例如。
(假裝您的階段是200像素×寬×高)

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); 
} 

我沒有測試過這一點,但它應該是正確的。