![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Увеличиваю MovieClip размерами больше сцены (окна) приложения. При этом мувик произвольно смещён относительно центра сцены, но важно, чтобы пропорции смещения не изменялись. То есть:
Где прямоугольник без заливки - сцена, окно приложения. Желтый прямоугольник - мувик. Точка "А" находится на мувиклипе, в данный момент в центре окна приложения. Важно чтобы при увеличении мувика точка "А" так и оставалась в центре сцены. Как я это делаю: Вычисляю смещение левой стороны мувиклипа относительно окна var leftShoulderX:Number = Math.abs(oldX / (oldWidth - this.stage.stageWidth)); var leftShoulderY:Number = Math.abs(oldY / (oldHeight - this.stage.stageHeight)); Позиционирую _pictMovie.x = (this.stage.stageWidth - _pictMovie.width) * leftShoulderX; _pictMovie.y = (this.stage.stageHeight - _pictMovie.height) * leftShoulderY; ложения. Теоретически все выглядит правильно, пересчет в ручную дает погрешность в 1, 2 пиксела на 5000, в данном случае это вполне приемлемо. Но правктически мувик в окне "едет" при увеличении вправо и вниз на 100-200 пикс. Что я делаю не так? Замылил уже мозг, мне надо чтобы кто то свежим взглядом глянул . |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
как раз для таких случаев у DisplayObject есть методы globalToLocal, localToGlobal.
Делается так: 1) Есть мувик с именем mc. 2) Получаем координаты его центра до начала скейла в системе координат его парента: 3) Скейлим и снова вычисляем координаты центра: 4) Если (p1.x!=p2.x || p1.y!=p2.y) корректируем положение мувика код писал из головы поэтому может потребуется поменять знаки у delta. UPD: если мувик лежит непосредственно на стейдже, то можно сэкономить и вычислять координаты центра мувика в системе координат стейджа. Тогда не надо дважды вызывать достаточно ресурсоемкую операцию globalToLocal Последний раз редактировалось undefined; 27.02.2011 в 22:40. |
|
|||||
|
Цитата:
Цитата:
и да - мувик лежит на сцене и его лок. координаты совпадают с его глоб. координатами. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
Цитата:
В твоем случае коррдинаты в new Point(0,0) надо заменить на координаты точки A относительно mc. Цитата:
Последний раз редактировалось undefined; 27.02.2011 в 23:38. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
Спрайт спозиционировать на сцене так, чтобы точка А была в нужном месте. После этого при применении скалирования к спрайту точка А двигаться не будет, а все, что лежит в спрайте, будет равномерно скалироваться относительно нее. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
тоже неплохой вариант
сам последнее время пытаюсь всю графику внутри символов выравнивать так, чтоб точка (0,0) была в геометрическом центре символа. Тогда при изменение размера стейджа надо просто пропорционально изменить координаты мувиков и не надо вызывать гетеры width и height. Работает не всегда, но достаточно часто. |
|
|||||
|
А, понял! я вас немного в заблуждение ввел этой точкой "А". Дело в том, что точка "А" это не объект, точкой "А" , здесь, я обозначаю место которое сейчас находится в центре сцены, и это место всегда должно оставаться в центре. Спрайт не подходит, так как я заранее не знаю, где именно будет точка "А". Ближайший аналог, такой системы, который приходит на ум - карты гугла и яндекса, или средство просм. изображений в винде.
Добавлено через 6 минут Цитата:
Впрочем мы все равно не о том говорим, не вижу разницы между выявлением отношения координат центра и края к координатам другого объекта, если они в одном координатном пространстве, техника будет одна и та же. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
Цитата:
Идея в том, что, зная какая точка мувиклипа должна быть в центре стейджа, независимо от точки регистрации, можно пригвоздить эту точку к стейджу, надо только узнать какую точку внутри мувика надо приклеить. Это моментально делается с помощью панели properties. |
|
|||||
|
Если вы сами ее измените, или если это окружность... К чему это замечание?
Добавлено через 2 минуты Цитата:
, какие пропертис? ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:28. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|