Показать сообщение отдельно
Старый 15.07.2009, 16:28
SunShadow вне форума Посмотреть профиль Отправить личное сообщение для SunShadow Найти все сообщения от SunShadow
  № 8  
Ответить с цитированием
SunShadow
 
Аватар для SunShadow

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
разбираем код и смотрим почему уходит влево.
Код AS3:
//допустим у вас здесь значения
//mouseX  = 20;
//mouseY = 40;		
map.scaleX += event.delta / mod;
map.scaleY += event.delta / mod;
// А теперь после масштабирования ваш ролик вырос, и указатель мыши относительно ролика сдвинулся
// допустим event.delta / mod == 2;
// тогда ориентировочно 
// mouseX = 10;
// mouseY = 20;
// а теперь вы координаты курсора используете в формуле 
// Но они ведь отличаются от исходных значений которые были до масштабирования в 2 раза
//(Да и 2 можно упростить по математике));
map.x = ((2 * mouseX) - (2 * (event.localX * map.scaleX))) / 2;
map.y = ((2 * mouseY) - (2 * (event.localY * map.scaleY))) / 2;
вот и все.
Поменяйте операции местами, сначала делайте смещение а потом уже масштабируйте и все должно быть ок.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ


Последний раз редактировалось SunShadow; 15.07.2009 в 16:33.