Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.12.2012, 22:08
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 1  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
По умолчанию Перевод реальных координат мыши в координаты искажённого объекта (flash.geom.Matrix)

Есть сетка квадратных тайлов, мы делаем её "изометрической": поворачиваем на 45°, скейлим по 'y' на 0.8, задаём необходимые координаты.



Затем, нужно получить старые координаты вершин (как будто сетка не была повёрнута). Кликаем поочерёдно по вершинам, по CLICK выполняем функцию:
Код AS3:
var mtrx:Matrix = new Matrix();
mtrx.translate(-grid.x, -grid.y);	// сдвигаем назад на ноль
mtrx.scale(1, 1.2);					// скейлим обратно в бОльшую сторону
mtrx.rotate(-Math.PI/4);			// поворачиваем обратно на 45°
var pnt:Point = mtrx.transformPoint(new Point(mouseX, mouseY));	// получаем здесь нужную нам точку
Результаты кликов по красным вершинам:
Код:
(x = 0, y = 0)
(x = 49, y = 0)
(x = 98, y = -1)
(x = 147, y = -2)
(x = 196, y = -2)
Результаты кликов по зелёным вершинам:
Код:
(x = 0, y = 0)
(x = 0, y = 49)
(x = -1, y = 97)
(x = -2, y = 146)
(x = -3, y = 197)
Ширина клетки = 50 пикселей, считает ПОЧТИ правильно. Откуда выпадает эта ошибка-погрешность? Что я не учёл?

Чтобы было понятнее:
Клики должны выдавать:
Код:
(x = 0, y = 0)
(x = 50, y = 0)
(x = 100, y = 0)
...
(x = 0, y = 50)
(x = 0, y = 100)
(x = 0, y = 150)
...
__________________
Нормально делай — нормально будет!

Создать новую тему   Часовой пояс GMT +4, время: 06:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.