Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Узнать отражен ли мувиклип по горизонтали (http://www.flasher.ru/forum/showthread.php?t=209556)

HardCoder 21.11.2014 01:28

Узнать отражен ли мувиклип по горизонтали
 
Здравствуйте. Третий день мучаюсь со следующей проблемой. В Adobe flash на сцене размещен мувиклип. Он отражен по горизонтали вручную (Модификация=>Преобразование=>Отразить слева нараво). В коде нужно узанть scaleX этого клипа. mc.scaleX - выдает 1 а не (-1). Тоесть этот метод не понимает что объект отражен вручную.:eek:
Возможно ли с помощью матриц преобразования как-то узнать настоящий scaleX этого объекта?
Или есть другой способ?
Спасибо.

Партизан 21.11.2014 08:30

Код AS3:

mc.transform.matrix.a


HardCoder 21.11.2014 08:41

Партизан, спасибо, выдает (-1). Но это не всегда верно. Если мувиклип покрутить - то значение изменяется. Можно ли как-то вычислять scaleX независимо от угла поворота мувиклипа?
Помогите, пожалуйста - очень нужно.

Партизан 21.11.2014 09:25

Угол поворота на 0 сбросьте, будет вам счастье, я полагаю...

HardCoder 21.11.2014 09:36

Цитата:

Сообщение от Партизан (Сообщение 1175260)
Угол поворота на 0 сбросьте, будет вам счастье, я полагаю...

Как сбросить? Не крутить его вообще? Нельзя.
Дело в том что пишу на Java, а анимацию всегда делаю в Adobe Flash (spritesheet-ами). Теперь стала задача имитировать flash-анимацию на java для экономии памяти. Тоесть в Adobe Flash руками рисую анимацию. Запускаю ролик - и в output получаю xml следующего содержания (приблизительно)
Код:

<frame>
  <layer x='..' y='..' scaleX='..' scaleY='..' rotation='..'/>
  <layer x='..' y='..' scaleX='..' scaleY='..' rotation='..'/>
.................................
</frame>

Потом в Java подгружаю этот xml и двигаю уже спрайты (не мувиклипы) по заданным параметрам.
Все работает, только scaleX и scaleY вычисляются неправильно. Без этого вся моя затея и потраченное время летит в тарары.
Помогите кто может!!!

Партизан 21.11.2014 10:06

Нда.. похоже не все так просто, в случае поворота в IDE.

Добавлено через 35 минут
Вам же нужно понять отражен ли объект по горизонтали?
Если объект отражен по горизонтали, то у matrix.a и matrix.d будут противоположные знаки.

samana 21.11.2014 11:12

Может тогда к тем объектам у которых должен быть scaleX=-1 добавить в имя какой нибудь префикс/постфикс (например box_sxRevers) и уже при выводе xml написать условие, мол если в имени есть "_sxRevers" то записывать масштаб с минусовым значением.

HardCoder 21.11.2014 11:51

Цитата:

Сообщение от Партизан (Сообщение 1175263)
Если объект отражен по горизонтали, то у matrix.a и matrix.d будут противоположные знаки.

А вот этого я не знал! Спасибо. Значит мне нужно проверить одинаковость знаков a=1 или -1, потом scaleX клипа умножить на (a) . Дома попробую.
Samana, спасибо - тоже вариант. Но это на крайний случай, если не получится первый. В разных кадрах один и тот же клип может иметь scaleX (-0.8) а в другом кадре (0.5). Тоесть в каждом кадре нужно прописывать разный instanceName. А потом вылезет и scaleY еще. Тут точно без ошибок не обойдешься. К тому же по времени - это очень долго.

Партизан 21.11.2014 11:58

Но.... это если объект не отражен по вертикали :)

samana 21.11.2014 12:47

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


Часовой пояс GMT +4, время: 14:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.