![]() |
вращение и передвижение
Вложений: 2
Да простят меня админы, создаю еще одну тему.
Задача следующая, есть спрайт, который постоянно движется и вращается. У нас есть таймер, к нему привязана функция которая через определенные промежутки времени вызывает вращение спрайта а затем перемещение. Все. Проблема в том, что спрайт отлично вращается если мы не задаем никакую скорость по x и y осям. Или если нет вращения, то отлично передвигается. Но если спрайту нужно передвинуться и повернуться во время движения, тут он начинает неадекватно двигаться. На форуме добрые люди помогли разобраться с вращением, оно выглядит так : Код AS3:
Код AS3:
|
Ерунда какая-то написано или я чего-то не понимаю
делаете спрайт в адоб флеш СС и указываете начало координат в центре или гуглите как отцентровать спрайт вращение Код AS3:
|
Вложений: 2
в вашем коде он не будет вращаться вокруг своей оси
вращается он нормально и перемещается, но если мы сделаем скорость Vx <1 и Vy <1 то начинается двигаться вот так а вот так например когда скорости Vy= 1 и Vx=1 , все нормально с тем же кодом не совсем понял, начало координат же это всегда левый верхний угол? |
Вложений: 1
Цитата:
Код AS3:
|
ваша правда, нарисовал многоугольник так чтобы его центр лежал на точке 0,0 родительского контейнера и вращение теперь нормальное! Не совсем въезжаю почему так.
|
Потому, что так устроен рендер Flash.
Каждый DOC имеет свою систему координат, начало которой считается от x/y внутри родителя. Вращаются объекты вокруг своего центра координат. Если вы создадите 2 класса, например треугольник и круг, унаследовав их от Sprite, и центр у обоих будет слева вверху, и положите один в другой, например, треугольник в квадрат, и будем вращать квадрат, ничего не изменится, но если написать так Код AS3:
|
потому что скорее всего расчёт вёлся относительно родительского контейнера, по этому и нужно центровать спрайты, там две строчки кода, но счас не вспомню, в гугле найдётся
с другой стороны это очень удобно, например создаём класс, который расширяет данный спрайт, и создадим в нём пару спрайтов написав this.addChild (если stage.addChild то расчёт будет относительно координат сцены) и всё, данные спрайты будут двигаться относительно расширенного спрайта, не нужно никаких расчётов, слушателей и т.п. |
понял вас, спасибо за помощь!
|
| Часовой пояс GMT +4, время: 17:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.