2011-03-07 3 views
1
나는 사각형이 간단한 클래스가있는 경우

는 :도움말

package 
{ 

import flash.display.Sprite; 
import flash.geom.Rectangle; 

public class Spot extends Sprite 
{ 
    private var __rect:Rectangle; 

    public function Spot() 
    { 
     init(); 
    } 

    private function init():void 
    { 
     __rect = this.getRect(this); 

    } 

    public function get rect():Rectangle{ 
      return __rect; 
    } 

} 

} 

을 내가 무대에이 클래스의 인스턴스를 애니메이션과 그것의 추적하려고 좌표

package 
{ 

import flash.display.Sprite; 
import flash.events.Event; 
import flash.geom.Point; 

public class RectangleTest extends Sprite 
{ 
    public var spot:Spot = new Spot(); 
    public function RectangleTest() 
    { 
     init(); 
    } 

    private function init():void 
    { 
     addEventListener(Event.ENTER_FRAME, dynamicSpotTrace, false, 0, true);  
    } 

    private function dynamicSpotTrace(e:Event):void 
    { 
     trace(spot.rect.x, spot.rect.y, spot.rect.width, spot.rect.height); 
    } 

} 

} 

출력 트레이스 :

0 0 65 65 
이상

이상 (스팟은 0,0의 등록 포인트를 가지고 있기 때문에) ... 방법은 수 이렇게하면 모든 프레임에서 스팟 인스턴스의 새로운 좌표를 얻을 수 있습니다. (지점이 실제로 화면을 가로 질러 움직이기 때문에 실제로 움직입니다.)

+0

실제로 애니메이션에서 어떤 요소를 타겟팅하고 있습니까? 나가 말하고 싶은 것은, 만일 당신이 rect와 not spot을 움직이면, spot은 단지 rect와 함께 움직이고, 정말로 움직이지 않고있다라는 것이다. –

+0

오 예, 저는 스팟을 움직입니다 ... 저는 그 스턴트가 그 자리를 따라 가길 희망합니다 ... – redconservatory

답변

1

taskinoor의 대답을 염두에두고 훨씬 쉽게 할 수 있습니다.

private function dynamicSpotTrace(e:Event):void 
{ 
    var rect:Rectangle = spot.getRect(stage); 
    trace(rect); 
} 
2

getRect의 매개 변수는 targetCoordinateSpace입니다. 즉, 표시 객체의 좌표 공간 사각형이 표시됩니다. 그래서 this 대신 사각형을 가져올 좌표계 (즉, 부모 표시 객체 인 Spot)의 표시 객체에 대한 참조를 전달해야합니다. this을 전달하면 Spot은 (0, 0)을 항상 원점으로하는 자체 로컬 좌표계에서 사각형을 반환합니다. 결과를 RectangleTest 좌표계로 나타내려면 Spot 생성자에 해당 참조를 전달하고 getRect의 매개 변수로 사용할 수 있습니다.

참고 : 필자는이 테스트를 직접 해보지 않았지만 매뉴얼을 읽은 후에는 이해할 수 있습니다.