2011-09-12 8 views
0

私は、ユーザーが画像をアップロードした後、クリック、ドラッグ、サイズ変更バーを使用して画像を変形するアプリケーションを持っています。しかし、私のクライアントは、ユーザーがどこにドラッグできるかを制限するように依頼していますが、これは問題ではありません。ActionScriptのドラッグの制限は、後ろにありますか?

私はstartDrag(false、new Rectangle ...)がうまく動作しますが、私が必要とするのは、ユーザーが境界の外にドラッグでき、その内側に空白がないようにすることですフラッシュファイル。

これは、500ピクセル幅のフラッシュファイルとその中に私が不用意にドラッグしているイメージがあると言うことです。右端の画像(左にドラッグすると)が500ピクセルに達すると、ドラッグが停止し、それ以上左に引っ張らないようにします。

私はこれをうまく説明してくれることを願っています。どんな指針も素晴らしいでしょう!

以下は、現在ドラッグイベントのコードです。

本当にありがとうございます。

public function startImageDrag (e:MouseEvent):void { 
     mousePos['x'] = e.target.mouseX; 
     mousePos['y'] = e.target.mouseY; 
     imageDraggable.removeEventListener(MouseEvent.MOUSE_DOWN, function():void {}); 
     photoapp.cStage.addEventListener(MouseEvent.MOUSE_MOVE, moveImage); 
     photoapp.cStage.addEventListener(MouseEvent.MOUSE_UP, endImageDrag); 
    } 
    //The type is wildcarded because I have this hooked to MOUSE_LEAVE too 
    public function endImageDrag (e:*):void { 
     photoapp.cStage.removeEventListener(MouseEvent.MOUSE_MOVE, moveImage); 
     photoapp.cStage.addEventListener(MouseEvent.MOUSE_DOWN, startImageDrag); 
    } 

    public function moveImage(event:MouseEvent):void { 
     //Get the offset of the current mouse position over the image 
     var 
      //The mouse position on the stage 
      sxOff:Number = photoapp.cStage.mouseX, 
      syOff:Number = photoapp.cStage.mouseY, 
      //The position on which the mouse down event was on the image 
      reX:Number = sxOff - mousePos['x'], 
      reY:Number = syOff - mousePos['y'], 
      //The iamge object 
      i:DisplayObject = imageDraggable; 

     //Move the image 
     if (/*I have no idea now...*/) { 
      imageDraggable.x = reX; 
     } 
     if (iY) { 
      imageDraggable.y = reY; 
     } 

     event.updateAfterEvent(); 
    } 

答えて

1
// this code will limit the movement to 100 pixels to the right 
var bounds:Rectangle = new Rectangle(0,0,100,0) 
imageDraggable.startDrag(false,bounds); 

[EDIT]
多分これが

var boundsWidth:Number = stage.stageWidth - pictureHolderMC.width); 
var boundsHeight:Number = stage.stageHeight - pictureHolderMC.height); 
var bounds:Rectangle = new Rectangle(0, 0, boundsWidth, boundsHeight); 
pictureHolderMC.startDrag(false, bounds); 
+0

いくつかは、より多くの理解に役立ちますこんにちは、私はこれを行う方法を知っている..質問がにドラッグし、ターゲットを制限する方法を尋ねステージの端。彼らは** 0、0、stage.stageWidth、stage.stageHeight **を越えてドラッグすることはできませんので、空白の代わりに常にその中にコンテンツがあります。 –

+0

長方形(0,0、stage.stageWidth-imageDraggable.width、stage.stageHeight-imageDraggable.height) –

+0

申し訳ありませんが、これを説明するためのより良い方法は、上端と左端がマイナスの数値(ステージ外)底部および右部はステージ寸法の外側でのみ許容される。申し訳ありませんがあなたの答えを見た、私はそれを試みます。 –

関連する問題