Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2008, 11:18
Интересующийся
Отправить личное сообщение для Воитель Посмотреть профиль Найти все сообщения от Воитель
 
Регистрация: 24.06.2008
Сообщений: 26

Отслеживание координат мышки
Здравствуйте.
Мне надо определять координаты мышки, как можно чаще. Воопщем надо следить за курсором, и в его соответсвующих положениях отправлять флэшке занчение переменной.
Нашёл пример, в котором определяют координаты мышки. Почти полностью в нём разобрался, только не пойму почему он выполняет постоянно, раньше я пользовался функицией сеттаймаут(точно не помню как она называется) она выполняла заданную функцию через определённое кол-во времени.А тут я не нашёл ни чего подобного.
Код:
<script type="text/javascript">
<!--
	function getCoords() {
	// вызывается при перемещении курсора
	// над слоем с картой
		// координаты слоя с картой
		// в окне браузера
		imageMapX = findPosX(imageMap);
		imageMapY = findPosY(imageMap);
		imageMap.onmousemove = moveDot;
		imageMap.onmouseover = moveDot;
		// точку надо убирать, если курсор
		// покинул слой с картой
		imageMap.onmouseout = function (){
			myDot.style.display='none';
			};
		// координаты точки надо запомнить
		imageMap.onclick = coordsFix;
	}

	function coordsFix() {
	// функция фиксирует координаты точки при клике
		// координата X
		myForm.coordXfix.value = myForm.coordX.value;
		// координата Y
		myForm.coordYfix.value = myForm.coordY.value;
		// точка показывается
		myDot2.style.display='block';
		// и позициоируется
		myDot2.style.left = myForm.coordX.value+'px';
		myDot2.style.top = myForm.coordY.value+'px';
	}
	function moveDot(cursor) {
	// функция перемещения точки над слоем с картой
		// точку надо покзать
		myDot.style.display='block';
		if(!cursor) var cursor = window.event;
		myForm.coordX.value = '';
		myForm.coordY.value = '';
		var x = 0;
		var y = 0;
		if (cursor.pageX || cursor.pageY) {
			x = cursor.pageX;
			y = cursor.pageY;
		}
		else if (cursor.clientX || cursor.clientY) {
			x = cursor.clientX + document.body.scrollLeft;
			y = cursor.clientY + document.body.scrollTop;
		}
		x -= imageMapX;
		y -= imageMapY;
		x -= dX;
		y -= dY;
		// для наглядности координаты точки
		// показываются во временых полях формы
		// справа "X" и "Y"
		(x < 0) ? myForm.coordX.value = 0 : myForm.coordX.value = x;
		(y < 0) ? myForm.coordY.value = 0 : myForm.coordY.value = y;
		// если курсор не покинул слой с картой,
		// точка перемещается с курсором
		if (x>0 && y>0 && x<mapWdt && y<mapHgt) {
			myDot.style.left = x+"px";
			myDot.style.top = y+"px";
		}
	}
	function getObj(name) {
	// функция захвата объекта, используется при инициализации
		if (document.getElementById) return document.getElementById(name);
		else if (document.all) return document.all[name];
		else if (document.layers) return document.layers[name];
		else return false;
	}
	function findPosX(obj) {
	// X-координата слоя
		var currleft = 0;
		if (obj.offsetParent)
			while (obj.offsetParent) {
				currleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		else if (obj.x) currleft += obj.x;
		return currleft;
	}
	function findPosY(obj) {
	// Y-координата слоя
		var currtop = 0;
		if (obj.offsetParent)
			while (obj.offsetParent) {
				currtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		else if (obj.y) currtop += obj.y;
		return currtop;
	}

function init() { // инициализация
	// смещение для точки
	dX = 7;
	dY = 7;
	// форма
	myForm = getObj('mapForm');
	// слой с картой
	imageMap = getObj('schemePlace');
	imageMap.onmouseover = getCoords;
	// ширина и высота слоя - смещение
	// чтобы точка за пределы картинки
	// даже не думала уходить
	mapWdt = imageMap.offsetWidth - dX;
	mapHgt = imageMap.offsetHeight - dY;
	// точки
	myDot = getObj('magDot');
	myDot2 = getObj('magDot2');
}


// ожидание загрузки страницы
// и вызов функции инициализации
try {
	window.addEventListener('load', init, false);
} catch(e) {
	window.onload = init;
}
	
	
//-->	
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2008, 11:27
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

imageMap.onmousemove = moveDot;

Потому что определдение координат повешено на маусмув над картинкой.
Повесь функцию определения координат на документ (document.onmousemove = funcXXX) будет определать координаты постоянно, пока мышка над документом (то бишь, в окне)
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2008, 12:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от ZoNT
пока мышка над документом
пока мышка двигается над документом
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2008, 12:14
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

У меня всё правильно - мышь не двигается - координаты не меняются, двигается - меняются. НО!!! Только если мышь НАД документом (двигается+недвигается).

Или вы считаете, что неподвижность мыши - это уже не информация???
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2008, 14:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Просто неточное предложение, которое, тем не менее, может ввести в заблуждение: если курсор неподвижен над документом, событие не будет срабатывать, и, соответственно, координаты определяться не будут.

Сообщение от ZoNT
Или вы считаете, что неподвижность мыши - это уже не информация???
Вы не сможете отследить неподвижность мыши, т.к. непонятно, неподвижна она или находится за пределами документа.
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2008, 15:01
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

НАД документом я могу отследить неподвижность мышки!!!
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2008, 15:02
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от ZoNT Посмотреть сообщение
(document.onmousemove = funcXXX) будет определать координаты постоянно, пока мышка над документом (то бишь, в окне)
Тут ясно указано, пока мышка НАД документом, я могу делать что угодно!!!
Ответить с цитированием
  #8 (permalink)  
Старый 29.07.2008, 15:12
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Конечно можете, но событие onmousemove, как нетрудно догадаться по названию, срабатывает при перемещении указателя над элементом.
Ответить с цитированием
  #9 (permalink)  
Старый 29.07.2008, 15:28
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

правильно - маусаута не произошло (мышка НАД документом), маусмува нет - что с мышкой???
Ответить с цитированием
  #10 (permalink)  
Старый 29.07.2008, 15:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

ZoNT, согласен, так можно отследить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
горизонтальный скроллинг при движении мышки flexpro Общие вопросы Javascript 9 25.07.2008 14:12
Получение координат изображения Гость Общие вопросы Javascript 4 08.04.2008 19:50