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

関連する問題