获得一个物体的区域

时间:2010-01-06 03:54:28

标签: flash actionscript-3 actionscript flashdevelop

我正试图抓住我对象的四个角落。要测试它是否足够准确。当鼠标通过对象的底部,左侧,右侧或顶部时,使用一种方法来跟踪消息。当对象位于坐标0,0时。它完美无缺。但是当我重新定位它。它变得关闭,我不知道为什么。这是我的代码。

在我的班级中,有一个循环有2个methods.updateArea()。和核弹。更新区域常量给出对象所在位置的更新。我的显示对象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;
        }

    }
}

1 个答案:

答案 0 :(得分:1)

x / y / mouseX / mouseY始终相对于父级。您可以使用localToGlobal和globalToLocal从父坐标转换为全局坐标。

此外,如果您的对象不是方形或有洞,您可以使用hitTest测试碰撞,而不是根据坐标进行计算。