2011-06-27 14 views
0

我是AS3的新手,我有一個比舞臺(200w)大的方形(1200w)。現在,您可以儘可能將它左右拖動。我怎樣才能設置一個限制/限制你可以拖動多少廣場?所以它不能被拖動超出最大寬度?AS3如何設置邊界鼠標下拉?

Here's an image

this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 

function mouseDownHandler(e:MouseEvent) { 
    this.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); 
} 

function mouseMoveHandler(e:MouseEvent) { 
    square_mc.x = mouseX; 
} 

function mouseUpHandler(e:MouseEvent) { 
    removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); 
} 

請注意,我不希望使用startdrag()方法。

+0

爲什麼不使用startdrag()?我認爲這將是實現這一結果的最簡單方法,而且你知道,它是閃存中的本地方式,用於實際上將東西拖到周圍...... – danii

回答

0

根據您的圖像,假設mc指的是藍色框。

var ox:Number = 0; 

mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 

function mouseDownHandler(e:MouseEvent):void 
{ 
    ox = mc.mouseX; 

    stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); 
    stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 
} 

function mouseUpHandler(e:MouseEvent):void 
{ 
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); 
} 

function mouseMoveHandler(e:MouseEvent):void 
{ 
    mc.x = mc.parent.mouseX - ox; 

    if(mc.x > 0) mc.x = 0; 
    if(mc.x + mc.width < stage.stageWidth) mc.x = stage.stageWidth - mc.width; 
} 

希望這是你以後的樣子。

+0

感謝馬蒂,但是呃它不能很好地工作。它會閃動到設定的邊界,但您仍然可以將其拖到設定的邊界之外。 – muudless

+0

給出一個嘗試 - 修改,以便該框不會實際移動,直到進行邊界檢查。 – Marty

+0

現在不工作了。我已經更新了一下我的問題,現在它的內容是:「我怎樣才能設置限制/限制你可以拖動的平方的多少?這樣它就不會被拖動超過它的最大寬度?」。也許這解釋了我想要做的更好? – muudless