2010-01-06 79 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