2010-04-07 4 views
0

객체를 만드는 클래스 내에서 부모 객체 또는 스테이지에 따라 표시 객체의 좌표를 참조 할 수 있습니까?AS3의 표시 객체의 드래그 좌표 제한

사용자 지정 클래스에서 새 스프라이트 개체를 만들고 표시 목록에 추가 할 때 드래그 좌표를 스테이지 나 스테이지 섹션으로 제한하는 코드를 사용자 정의 클래스 내에 포함하고 싶습니다. .

//Frame Script 
import Swatch; 

var test:Sprite = new Swatch(); 
addChild(test); 

___________________ 

//Custom Class 
package 
{ 
import flash.display.Sprite; 
import flash.events.MouseEvent; 

public class Swatch extends Sprite 
    { 
    public function Swatch() 
     { 
     init(); 
     } 

    private function init():void 
     { 
     var swatchObject:Sprite = new Sprite(); 

     swatchObject.graphics.beginFill(0x0000FF, 1); 
     swatchObject.graphics.drawRect(100, 100, 150, 150); 
     swatchObject.graphics.endFill(); 

     swatchObject.addEventListener(MouseEvent.MOUSE_DOWN, onDrag, false, 0, true); 
     swatchObject.addEventListener(MouseEvent.MOUSE_UP, onDrop, false, 0, true); 

     this.addChild(swatchObject); 
     } 

    private function onDrag(evt:MouseEvent):void 
     { 
     evt.target.startDrag(); 
     //how to limit it's dragability to the Stage? 

     } 

    private function onDrop(evt:MouseEvent):void 
     { 
     evt.target.stopDrag(); 
     } 
    } 
} 
+0

사용자가 객체를 클릭하고 무대로 넘어가는 경우에 대비하여 Event.MOUSE_LEAVE 이벤트를 수신 대기해야한다는 것을 잊지 마십시오 ('onDrop'을 첨부하십시오). (아마 이것은 startDrag()'기능이 이미 있습니까?). 참조 : http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#event:mouseLeave – Cameron

답변

1

원하는 작업에 대한 기본 지원이 있습니다. startDrag()은 끌기가 발생할 수있는 영역을 제한하는 매개 변수로 사각형을 허용합니다. 도움이

function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void 

희망,

타일러.

+0

ok, startDrag의 두 번째 매개 변수는 내가 찾고있는 매개 변수입니다. 객체에서 무대를 어떻게 참조 할 수 있습니까? 나는 flash.display.Stage를 포함하여 시도한 다음 (this.parent.stage.stageWidth)를 추적했지만 오류가 발생했습니다. – TheDarkIn1978

+0

디스플레이 목록에있는 한 "stage.stageWidth"라고 말하면됩니다. 가져올 필요가 없습니다 –

+0

좋습니다. 알아 냈습니다. init() 함수를 대상으로하는 생성자에서 ADDED_TO_STAGE에 대한 이벤트 리스너를 만들어야했습니다. 그렇지 않으면 스테이지를 참조 할 때 null이되었습니다. 그 함정을 잊었다. – TheDarkIn1978