0

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

在我的课堂上,有一个有 2 个方法的循环。updateArea()。和检查球。更新区域常量更新对象所在的位置。我的显示对象焦点在我的 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;
        }

    }
}
4

1 回答 1

1

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

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

于 2010-01-06T04:31:34.310 回答