2010-01-06 8 views
0

내 개체의 네 모퉁이를 얻으려고합니다. 그것의 정확성 여부를 테스트합니다. 마우스가 객체의 아래쪽, 왼쪽, 오른쪽 또는 위쪽을 통과 할 때 메시지 추적 방법을 사용하십시오. 물체가 좌표 0,0에 위치 할 때. 그것은 완벽하게 작동합니다. 그러나 나는 그것을 재배치 할 때. 그것은 꺼져 버리고 나는 그 이유를 모른다. 여기 내 코드가있다.개체 영역 가져 오기

내 클래스에는 2 개의 methods.updateArea()가있는 루프가 있습니다. 그리고 checkball. 객체를 업데이트 할 영역 상수를 업데이트합니다. 내 표시 객체 forcus 포인트는 Flash Stage의 왼쪽 상단에 있습니다. 그래서 전폭과 높이를 사용합니다. 다시. 좌표 0,0에서 잘 작동하고 움직일 때 나던 않습니다.

package com.objects { 

    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.display.Stage; 
    import flash.geom.Rectangle; 

    public class Brick extends Sprite { 

     public var Points = 100; 
     public var bWidth:Number = 50; 
     public var bHeight:Number = 20; 
     private var left:Number; 
     private var right:Number; 
     private var top:Number; 
     private var bottom:Number; 
     public var ball:Ball; 
     private var lastDistance:Number; 

     public var hit:Boolean; 


     public function Brick():void 
     { 
      addEventListener(Event.ENTER_FRAME, loop); 
     } 

     private function loop(e:Event):void 
     { 
      updateArea(); 
      checkBall(); 
     } 
     private function updateArea():void { 
      left = x; 
      right = x + bWidth; 
      top = y; 
      bottom = y + bHeight; 
     } 

     private function checkBall():void 
     { 
      if(mouseY < bottom) 
      { 
       trace("Works!"); 
      } 
     } 
     public function getBall(ball:Ball):void 
     { 
      this.ball = ball; 
     } 

     public function xDir():Number 
     { 
      if ((ball.xDir * ball.xspeed) < 0) 
      { 
       return(-1); 
      } 
      else if ((ball.xDir * ball.xspeed) > 0) 
      { 
       return (1); 
      }   

      return 0; 
     } 

     public function yDir():Number 
     { 
      if (ball.yspeed < 0) 
      { 
       return(-1); 
      } 
      else if (ball.yspeed > 0) 
      { 
       return (-1); 
      }   

      return 0; 
     } 

    } 
} 
+0

흠, 내 무비 클립의 x 및 y 좌표가 무대 좌표와 다릅니다. 메인 스테이지 대신 내 디스플레이 객체 스테이지에 상대적이라는 것을 알았습니다. 하지만 항상 x와 y 좌표가 표시 객체에 대해 항상 메인 스테이지와 관련이 있다고 생각했습니다. 왜 이것이 다른가요 ?? – numerical25

답변

1

x/y/mouseX/mouseY는 항상 부모를 기준으로합니다. localToGlobal과 globalToLocal을 사용하여 부모 좌표에서 전역 좌표로 변환 할 수 있습니다.

또한 개체가 사각형이 아니거나 구멍이있는 경우 좌표 기반 계산 대신 충돌 테스트를 위해 hitTest를 사용할 수 있습니다.

+0

내 상황에, 그것은 그것처럼 보이지 않았다. 나는 둘 다 추적하고 다른 가치를 얻고 있었다. 그것이 무엇에 관한 것인지 잘 모르겠습니다. 그러나 내가 고치려고했던 이슈는 이제 고쳐졌다. 그래서 저는 g2g입니다. – numerical25

관련 문제