![]() |
Программное изменение точки привязки
Пофильтровал инет - ничего хорошего на эту тему не нашел. Нашел только как это делалось в АС 2.0 - жуть. Какие-то двойные контейнеры и тд. Может можно как-то проще в АС3.0 ?
Если конкретней то программно создаем контейнер под картинку, грузим туда картинку и хотим ее крутить ротейтом, но крутим пока относительно левого верхнего угла. А хотелось бы относительно центра. |
В контейнере картинку по центру нужно выставить. Тут уже кучу тем таких было...
|
Спасибо за содержательный ответ. И все же
Картинка адекватно грузится и адекватно отображается. Что значит "В контейнере картинку по центру нужно выставить"? Хоть намекните, ато я тоже могу сказать что проблема тривиальная, но она ж то от этого не решится! |
Картинку центруйте относительно контейнера - Loader'а в который Вы загружаете картинку. Крутите его content.
|
Хм. Ссори наверное за невежество, но ЧЕМ ее центрировать?!
|
Код AS3:
|
Ага, наверное я просто неверно задал вопрос.
Я хочу крутить картинку относительно ее же центра. А не относительно левого верхнего угла картинки и центра контейнера. Другими словами мне нужно сдвинуть точку привязки программно. Как бы это по-понятней. Вот есть например у нас в Самой флеше объект. Пусть квадрат. У него по-умолчанию точка привязки - левый верхний угол предположим. Вот мы его крутим и он вокруг этой точки и крутится. А теперь мы смещаем точку привязки (белый кружочек) куда хотим, хоть за пределы квадрата и крутим объект уже относительно этой новой точки. Так вот я и хочу узнать как это делать программно. |
Никак.
|
Не очень обнадеживает, но спасибо.
|
Тогда Вам придется смещать "точку привязки" в зависимости от угла поворота. Геометрия синусов и косинусов.
|
В TweenLite такое расширение было - точку выставляешь и крутишь/изменяешь размер объекта относительно нее... твинами того же TweenLite :D
|
marat_sa, только плагины именно эти платные, т.е доступны только членам клуба.
рабочее решение примерно такое: Код AS3:
|
да только матрицей и можно такое сотворить, вообще с помощью матрицы можно избавиться от произвольного количества контейнеров
|
функция rotateAroundPoint работает так как мне как раз нада ... только вот немогу понять как обнулять матрицу вращения при вызове функции... ну тоесть.
мне нада эту функцию вызывать в enterframe. когда я указываю 45 градусов например оно вращаеться бесконечно по кругу.... а мне нада только 1 раз. |
Так это не точка привязки (локальное начало координат объекта), а центр трансформации... Насколько помню, он существует только в Flash IDE для трансформирования ручками...
|
>>только вот немогу понять как обнулять матрицу вращения
а чего в хелп не смотрим? там ж написано для обнуления матрицы использутся метод identity |
та это не то, я имеюю ввиду просто если я написал
rotateAroundPoint(someDisplayObject, 45, centerPoint); то даже если эту функцию я вызову 100 раз то что бы someDisplayObject.rotation был 45 ... а не 45 90 135 180 и тд в цикле |
Код AS3:
|
ооо так правильоно теперь пашет...
но блин теперь немогу wsad кнопками картинку перемещать, потому что его матрица идентити становиться... ((( |
Значит нужно юзать матрицу для перемещения объекта, либо изначально поместить его в контейнер и сместить влево-вверх на треуемое кол-во пикселей (аналог установки "точки регистрации") и пользовать обычный rotation для контейнера.
А вообще я не понимаю зачем в ENTER_FRAME постоянно лишние расчеты, если нужно один раз повернуть объект на 45 градусов. |
ок щас буду думать ...
|
| Часовой пояс GMT +4, время: 02:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.