2010-01-06 103 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 2010-01-06 04:18:20

回答

1

x/y/mouseX/mouseY總是相對於父項。您可以使用localToGlobal和globalToLocal從父級轉換爲全局座標。

此外,如果您的對象不是正方形或有洞,您可以使用hitTest來測試碰撞,而不是基於座標計算。

+0

在我的情況下,它似乎並不像它。我正在追蹤並獲得不同的價值。不知道那是關於什麼的。但是我正試圖解決的問題現在已經解決了。所以我是g2g。 – numerical25 2010-01-06 07:42:58