Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Связь между локальными и глобальными координатами
Flash Zone Forum > Macromedia Flash > Общие вопросы
Rotwang
Такой случай. Есть флешка размером 500х400, и фон размером, например, 2800х2500. Этот фон прокручивается внутри флешки перетаскиванием мышью. Так вот, нельзя ли установить каковы локальные координаты точки фона, находящейся точно в центре флешки? Не щелкая при этом мышкой. То есть, если глобальные координаты центра флешки х=250, у=200, то каковы координаты локальные?
/2D/
Цитата
Так вот, нельзя ли установить каковы локальные координаты точки фона, находящейся точно в центре флешки? Не щелкая при этом мышкой. То есть, если глобальные координаты центра флешки х=250, у=200, то каковы координаты локальные?

что-то такое:
Код
-1*(mc.x)+stage.stageWidth/2
-1*(mc.y)+stage.stageHeight/2
Rotwang
Цитата(/2D/ @ 8.04.2009 - 07:53) *
что-то такое:
Код
-1*(mc.x)+stage.stageWidth/2
-1*(mc.y)+stage.stageHeight/2

То есть это полностью так:
Код
local.x=-1*(mc.x)+stage.stageWidth/2
? А что здесь mc.x и mc.y? Координаты центра stage? Но тогда ведь все время будет получаться одно и то же значение?
chingachgoog
Цитата(Rotwang @ 8.04.2009 - 11:47) *
А что здесь mc.x и mc.y?

mc - это ваш мувик-фон, перемещаемый по стейджу.
Это код верен, когда масштабирование флешки запрещено (начало координат стейджа в левом верхнем углу) и когда начало координат мувика-фона также находиться в левом верхнем углу.

PS
Я так понимаю вам в AS3 нужно. Тогда правильнее определять так:
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...globalToLocal()
Rotwang
Да, спасибо chingachgoog, мне как раз нужно AS3. А что, если изображение масштабируемое? Вообще, мне нужно сделать карту с приближением и удалением (с зумом, короче говоря). А поскольку начало координат фона в левом верхнем углу, то при масштабировании происходит смещение. Мне же нужно, чтобы zoom происходил относительно центра, то есть необходимо как-то компенсировать это смещение. Но вот формулу пока подобрать не могу.
chingachgoog
Цитата(Rotwang @ 8.04.2009 - 12:43) *
А что, если изображение масштабируемое?

Я имел в виду
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...e.html#NO_SCALE
Rotwang
С методом globalToLocal() разобрался, как он работает. Теперь другое препятствие - передать результаты его работы переменным.
Код
var point1:Point = new Point(250, 200);

Применяю globalToLocal() для определения локальных координат в этой точке.
Код
container.globalToLocal(point1);
trace(container.globalToLocal(point1));

Все работает, в output получаем, к примеру, такие значения: (x=300, y=240). Как теперь передать эти координаты переменным newX и newY, если globalToLocal() возвращает Point?(globalToLocal(point:Point):Point).
chingachgoog
Цитата(Rotwang @ 8.04.2009 - 15:33) *
Как теперь передать эти координаты переменным newX и newY, если globalToLocal() возвращает Point?


Прочитать свойства объекта Point под именами x и y.
Rotwang
Я, кажется, разобрался. Создаю объект newPoint:
Код
var newPoint:Point=container.globalToLocal(point1);
trace("newX="+newPoint.x);
trace("newY="+newPoint.y);

Так ведь тоже можно?
chingachgoog
Так и нужно biggrin.gif
Русская версия IP.Board © 2001-2009 IPS, Inc.