2012-09-27 57 views
0

我想限制將動畫片段拖動到名爲「遮罩」的遮罩。可拖動的MC的名字是mapcontainer.themap。它的父母,mapcontainer,與舞臺成比例縮放。我如何限制被拖動的MC到面具?下面的代碼適用於加載,但不適用於舞臺縮放時。限制拖動影片剪輯進行遮罩,使用舞臺&mc縮放

function constrainMap():void { 
    leftedge = themapmask.x+mapcontainer.themap.width/2-mapcontainer.x; 
    rightedge= themapmask.x+themapmask.width-mapcontainer.width/2-mapcontainer.x; 
    topedge = themapmask.y+mapcontainer.themap.height/2-mapcontainer.y; 
    bottomedge = themapmask.y+themapmask.height-mapcontainer.height/2-mapcontainer.y; 
    if (mapcontainer.themap.x>leftedge) mapcontainer.themap.x=leftedge; 
    if (mapcontainer.themap.y>topedge) mapcontainer.themap.y=topedge; 
    if (mapcontainer.themap.x<rightedge) mapcontainer.themap.x=rightedge; 
    if (mapcontainer.themap.y<bottomedge) mapcontainer.themap.y=bottomedge; 
} 

回答

1

Sprite.startDrag函數接受特別是對於阻力面積約束的第二個參數,和DisplayObject.getBounds函數返回一個矩形的邊界的所施加的說法DisplayObject的上下文中的對象。所以,基本上,你需要做的是:

mapcontainer.themap.startDrag(false /*or true*/, themapmask.getBounds(mapcontainer)); 

你可以放下整個constrainMap函數。

+0

這不起作用 - 可能是因爲可拖動的剪輯的註冊點位於中心。有任何想法嗎? – lgriffin

+0

是的,所以在這種情況下,您需要對發送給startDrag的矩形進行一些更改,如下所示: –

+1

@ user1342133 var rect:Rectangle = themapmask.getBounds(mapcontainer); mapcontainer.themap.startDrag(false/*或true * /,new Rectangle(rect.left + mapcontainer.themap.width/2,rect.top + mapcontainer.themap.height/2,rect.width - mapcontainer.themap.width ,rect.height - mapcontainer.themap.height))' –

相關問題