2011-06-27 78 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