![]() |
Задать центр вращения
Доброго времени суток.
Ситуация следующая: нарисовал, я, скажем, треугольник, создал из него Movie clip. Захотел я его покрутить с помощью изменения свойства rotation, только вот беда, центр вращения у него находится на месте пересечения диагоналей прямоугольника, обрамляющего его, а не на месте пересечения его медиан (треугольник равносторонний). Следовательно возник вопрос: как задать точку, вокруг которой он будет вращаться? |
Правой кнопкой по вашему клипу ->Edit-> ставьте его куда хотите.
p.s. заодно и узнаете, где у него центр вращения на самом деле. |
А в случае с динамическим изменением центра вращения можно создавать вложенный мувик и перемещать его в любую нужную позицию, а внешний уже вращать.
Цитата:
|
Проще всего задавать вращение в режими правки экземпляра символа, вызвав панель Align и при нажатой кнопке To stage нажать Align vertical center, затем Distribute horisontal center.
|
По-моему, если выбрать инструмент transform - то появляется дополнительный белый кружок, который указывает, вокруг чего вращать.
|
Раз уж зашёл вопрос.. а программно как?
|
А программно вращение всегда будет происходить вокруг точки (0, 0).
|
програмно делайте так:
создаете мувиклип, в нем еще один, во второй помещаете треугольник, сдвигаете второй так, чтобы его центр оказался в 0.0, и вращаете самый верхний мувиклип. |
AlexDesinger не надо такому людей учить...
Герыч, юзайте Transform Matrix хорошая статья http://www.senocular.com/flash/tutor...ansformmatrix/ |
Цитата:
То есть, матрица, остаётся хорошим вариантом - но дополнительных возможностей в плане вращения она не даёт. |
вы статью не смотрели
|
Цитата:
И, к стати, вращать можно только мувику экшеном, потому что ActionScript на символ Graffic не действует. |
Цитата:
Конечно, у меня нет возможности полностью разобраться со всеми деталями той статьи, но с матрицей трансформации я много успел поработать - так что мне кажется, что я понимаю в том, что говорю. Особого преимущества в данном случае матрица не даёт. Проще сдвинуть дочерний клип на минус половины размеров. Поэтому я согласен с предложением AlexDesigner-а и не согласен с вашим выражением "не надо людей такому учить". Очень даже надо. |
Ну не знаю... там примеры скомпиленные - вроде как раз то что топик стартер хотел
контейнер как то не по ООП'овски просто)))) ИМО |
Цитата:
Если по ООП - то предлагаете перегрузить чтение/присваивание матрицы и выполнять пересчёт? Можно, но сложно. Да и ненадёжно. По крайней мере, я бы не стал так делать. Можно унаследоваться от Matrix и добавить новые методы, которые позволяют задать матрицу относительно произвольной точки. Это мне кажется более правильным. А по факту - работать будет точно так же, как если бы клип был вложен в другой клип. |
Цитата:
Матрица - это самое близкое к нативному предтавлению плеера о грфических объектах, т.е. на присвоение новых значений уйдет минимум времени, кроме того, это всего 1 сеттер который нужно дернуть, а не 6... ну и все-таки матрица раз так в 5 меньше по объму занимаемой памяти чем самый примитивный спрайт... http://code.google.com/p/e4xu/source...i/Preloader.as Да, кстати, пример использования. |
Автор спрашивал только о том, как задать точку, вокруг которой происходит вращение. Один из вполне пригодных способов - сдвигать вложенную графику. Есть такой способ? Есть. Для новичка он пригоден и удобен. Мой ответ был адресован не для вашего уровня, а для тех, кто спрашивал.
Если для вашего проекта вы хотите реализовать сложение матриц - на здоровье. Но вы, наверное, не будете спрашивать на форуме как это сделать. |
Цитата:
|
|
Сейчас заметил, что в AS3 есть любопытный класс MatrixTransformer, который позволяет (в том числе) повернуть существующую матрицу относительно какой-нибудь точки. При таком раскладе матрицы получают явное преимущество.
UPD: Хотя поспешил. Не явное. Но дополнительные пару очков в свою пользу они набирают. |
вот именно MatrixTransformer + Matrix, покрывают практически все требования к геометрическим преобразованиям.
|
Всё, поглядел класс Matrix(там не 2*2, а 3*3! а это хорошо для 2д), понял, что вращение вокруг произвольной точки легко реализовать.
Вроде можно так: Код AS3:
|
выше уже упоминали, есть класс MatrixTransformer и у него методы для вращения вокруг произвольной точки:
Код AS3:
|
Но делает она то же самое и тем же методом!) Максимимум в чём их решение отличается от моего-тем, что они сразу задают коэфиициенты a,b,c,d,tx,ty, а не просчитывают в 3 этапа. Но сути не меняет
|
Герыч, для оформления своего кода надо использовать теги [code][/code]
Добавлено через 43 секунды Цитата:
|
Я вот такое использовал, если кому надо
Код AS3:
|
| Часовой пояс GMT +4, время: 12:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.