Как получить локальные координаты символа из ActionScript? - PullRequest
0 голосов
/ 18 августа 2010

У меня есть символ, изначально созданный по координате [-100, -100] (левый верхний угол). Теперь я поместил экземпляр этого символа на сцену с координатами [0,0] (перетаскивая его мышью в IDE). Имея этот экземпляр, я все же могу как-то определить исходную позицию [-100, -100] из ActionScript? (myInstance.x возвращает координату этапа).

Что я делаю:

  • создать новый символ в библиотеке, расположенной по координатам -100, -100 при его создании
  • поместите экземпляр этого символа на сцену в несколько разных координат
  • в Actionscript попытаться получить оригинальное значение -100 от объекта экземпляра, например:

this.myInstance.x (только это возвращает координаты сцены)

Почему я это делаю:

Я пытаюсь поместить этот мувиклип в BitmapData:

var myClip:MovieClip = this.myInstance;
var bmp:BitmapData = new BitmapData(myClip.width, myClip.height);
bmp.draw(myClip);

Проблема в том, что BitmapData выглядит так, как будто берёт только часть клипа, которая находится в положительных координатах. Чтобы преодолеть это, мне нужно предоставить матрицу преобразования с соответствующими смещениями:

var m:Matrix = new Matrix();
m.tx = 100;
m.ty = 100;
bmp.draw(myClip, m);

Я мог бы рассчитать это смещение, если бы знал исходные координаты символа до того, как оно было сброшено на сцену.

Надеюсь, это имеет смысл.

Ответы [ 4 ]

5 голосов
/ 18 августа 2010
// get bounds including strokes
// traces (x=-105, y=-105, w=110, h=110)
trace(myInstance.getBounds(myInstance));

// get bounds excluding strokes
// traces (x=-100, y=-100, w=100, h=100)
trace(myInstance.getRect(myInstance));
0 голосов
/ 18 августа 2010

Ваш объект может сохранить свою позицию во время его добавления на сцену, прежде чем он будет перемещен, прослушивая Event.ADDED_TO_STAGE в объекте Point.

0 голосов
/ 18 августа 2010

Спасибо за разъяснения, теперь стало намного понятнее!

Что вы спрашиваете, как найти правильные координаты графики внутри мувиклипа?Для этого необходимо сохранить графику в другом символе.Итак, просто дважды щелкните по символу и выберите всю графику внутри него.нажмите F8, чтобы сделать его еще одним символом и присвойте ему имя экземпляра по своему вкусу (например, бар).По сути, вы делаете MovieClip в MovieClip.

Теперь, когда вы добавляете экземпляр символа на сцену (скажем, его имя foo), просто выполните foo.bar.x или foo.bar.y и вы увидите графическое местоположение.

0 голосов
/ 18 августа 2010

Мне кажется, я понимаю, что вы говорите.Если у вас есть имя объекта внутри вашего символа, я думаю, вы можете достичь этого.Например, если у вас есть символ с изображением myImage в (x, y).Я считаю, что вы можете использовать mySymbol.myImage.x или mySymbol.myImage.y.Это то, что вы имеете в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...