AS3 - Как найти положение объекта относительно сцены? - PullRequest
14 голосов
/ 17 мая 2011

Если у меня есть прямоугольник на сцене, как мне найти его верхний левый кончик (x, y) и нижний правый кончик (x, y) по отношению к сцене?Странно, как я не могу найти это в Google!

Ответы [ 4 ]

19 голосов
/ 17 мая 2011

localToGlobal(point) из DisplayObject Преобразует точечный объект из (локальных) координат экранного объекта в координаты рабочей (глобальных).

// assuming (0, 0) is top left
var topLeftStage:Point = myDisplayObject.localToGlobal(new Point(0, 0));

// bottom right
var bottomRightStage:Point = myDisplayObject.localToGlobal(new Point(width, height));
4 голосов
/ 24 октября 2013

Вы можете сделать это в одной строке, например, если контейнер, к которому вы добавили его, также является DisplayObject, вы можете написать:

var rect:Rectangle = yourDisplayObject.getBounds(stage);

, который сразу перейдет к получению прямоугольника относительно вас.На сцену.Затем вы можете получить доступ к значениям, которые вы упомянули специально:

rect.bottomRight
rect.topLeft
2 голосов
/ 17 мая 2011

Если ваш объект находится в одном контейнере, вы можете просто вычесть позицию контейнеров из позиции объектов.

var rawx:Number = x - parent.x;
var rawy:Number = y - parent.y;

Остальное использовать localToGlobal(), как указано выше.


Найти верхнюю левую и нижнюю правую точки объекта легко, но вам нужно знать, где находится точка регистрации символа.

Если точка регистрации находится в центре символа:

var left:Number = x - (width / 2);
var right:Number = x + (width / 2);
var top:Number = y - (height / 2);
var bottom:Number = y + (height / 2);

Если бы это было вверху слева:

var left:Number = x;
var right:Number = x + width;
var top:Number = y;
var bottom:Number = y + height;

1018 * Etc. *

1 голос
/ 18 сентября 2012

, если экранный объект не начинается с 0,0 видеоклипа, вам понадобится:

var skin:DisplayObject = ... //the MC you need to get positions of
var point : Point = skin.localToGlobal(new Point(skin.getBounds(skin).x,skin.getBounds(skin).y));
var point2 : Point = skin.localToGlobal(new Point(skin.getBounds(skin).x+skin.getBounds(skin).width,skin.getBounds(skin).y+skin.getBounds(skin).height));

и результаты будут:

x=point.x;
y=point.y;
width=point2.x-point.x;
heigth=point2.y-point.y;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...