IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Связь между локальными и глобальными координатами, Существует ли?
Rotwang
сообщение 7.04.2009 - 21:12
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 44
Регистрация: 28.02.2009
Пользователь №: 9145



Такой случай. Есть флешка размером 500х400, и фон размером, например, 2800х2500. Этот фон прокручивается внутри флешки перетаскиванием мышью. Так вот, нельзя ли установить каковы локальные координаты точки фона, находящейся точно в центре флешки? Не щелкая при этом мышкой. То есть, если глобальные координаты центра флешки х=250, у=200, то каковы координаты локальные?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
/2D/
сообщение 8.04.2009 - 07:53
Сообщение #2


Участник
**

Группа: Пользователи
Сообщений: 117
Регистрация: 4.11.2006
Пользователь №: 1288



Цитата
Так вот, нельзя ли установить каковы локальные координаты точки фона, находящейся точно в центре флешки? Не щелкая при этом мышкой. То есть, если глобальные координаты центра флешки х=250, у=200, то каковы координаты локальные?

что-то такое:
Код
-1*(mc.x)+stage.stageWidth/2
-1*(mc.y)+stage.stageHeight/2
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 8.04.2009 - 10:47
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 44
Регистрация: 28.02.2009
Пользователь №: 9145



Цитата(/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
сообщение 8.04.2009 - 11:26
Сообщение #4


Участник
**

Группа: Пользователи
Сообщений: 83
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Rotwang @ 8.04.2009 - 11:47) *
А что здесь mc.x и mc.y?

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

PS
Я так понимаю вам в AS3 нужно. Тогда правильнее определять так:
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...globalToLocal()
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 8.04.2009 - 11:43
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 44
Регистрация: 28.02.2009
Пользователь №: 9145



Да, спасибо chingachgoog, мне как раз нужно AS3. А что, если изображение масштабируемое? Вообще, мне нужно сделать карту с приближением и удалением (с зумом, короче говоря). А поскольку начало координат фона в левом верхнем углу, то при масштабировании происходит смещение. Мне же нужно, чтобы zoom происходил относительно центра, то есть необходимо как-то компенсировать это смещение. Но вот формулу пока подобрать не могу.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 8.04.2009 - 11:48
Сообщение #6


Участник
**

Группа: Пользователи
Сообщений: 83
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Rotwang @ 8.04.2009 - 12:43) *
А что, если изображение масштабируемое?

Я имел в виду
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...e.html#NO_SCALE
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 8.04.2009 - 14:33
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 44
Регистрация: 28.02.2009
Пользователь №: 9145



С методом 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
сообщение 8.04.2009 - 14:59
Сообщение #8


Участник
**

Группа: Пользователи
Сообщений: 83
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Rotwang @ 8.04.2009 - 15:33) *
Как теперь передать эти координаты переменным newX и newY, если globalToLocal() возвращает Point?


Прочитать свойства объекта Point под именами x и y.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 8.04.2009 - 15:07
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 44
Регистрация: 28.02.2009
Пользователь №: 9145



Я, кажется, разобрался. Создаю объект newPoint:
Код
var newPoint:Point=container.globalToLocal(point1);
trace("newX="+newPoint.x);
trace("newY="+newPoint.y);

Так ведь тоже можно?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 8.04.2009 - 15:33
Сообщение #10


Участник
**

Группа: Пользователи
Сообщений: 83
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Так и нужно (IMG:style_emoticons/default/biggrin.gif)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 12.04.2009 - 19:21