Показать сообщение отдельно
Старый 14.01.2007, 08:13
pavel gorlov вне форума Посмотреть профиль Отправить личное сообщение для pavel gorlov Найти все сообщения от pavel gorlov
  № 1  
Ответить с цитированием
pavel gorlov

Регистрация: Jan 2007
Сообщений: 13
Attention zoom объекта относительно курсора мышки

Привет бойцы! Читал топики про карты и навигацию, но у меня несколько другая задача. Пишу систему навигации над графическим объектом. Вообщем уже 3-е сутки пошил, как я бъюсь над простой задачей:


1. Есть объект (movieClip)
2. Есть набор уже написанных мною функций, которые работают тут (кнопки фтопку, они для дебагинга)

- перемещение объекта по XY в зависимости положении мышки +коэф ускорения.

- Key.isDown(пробел) стандартная таскалка драг\дроп (как в фотошопе)
- мышкой выделяем область экрана, после чего центр выделения сместится в центр экрана (во фьючере выделенныя область должна увеличится в рамки экрана, опять же как в фотошопе, но для этого, мать его, мне и нужна zoom функция)

3. Хочу сделать следующее: делать zoom относительно координат мышки,
т.е. вот так:


Народ, я умом всё понимаю, ну Нихрена не могу сделать....
Если у кого то из Вас была такая же проблема, поделитесь опытом плиз
Я не сторонник искать\рыть чужие скрипты, тем более мне интересно самому понять до конца в чем моя ошибка. Думаю общими усилиями у нас получиться найти нужное русло. (Русло не нашла целая кафедра информатики в моём ВУЗе )

Я пытаюсь это делать так, хрень полная и не работает
Код:
// f - навигируему объект

var  x_mouse = _root._xmouse;
var  kx = 0;
o = new Object();

o.onMouseWheel = function(d) {
with(f){
	if(_root._xmouse == x_mouse)
	{
    d *= 2;
	dw = (_width / _height ) * d;
	dh = d;
	w_old = _width;
//    kx = _root._xmouse / _width;
	trace("_width СТАР=" + _width + " kx= "+ kx + "_x=" + _x);
	_width += dw;
	_height += dh;
	_x = _root._xmouse - (_width * kx);
	//_x = _x - 
	trace("_width НОВ=" + _width + " kx= "+ kx + "_x=" + _x);
	}
	else
	{
		x_mouse = _root._xmouse;
		kx = _root._xmouse / _width;
		trace("mouse=" + _root._xmouse + " kx= "+ kx);
	}
 }
 }

Mouse.addListener(o);


Последний раз редактировалось pavel gorlov; 14.01.2007 в 08:19.