Показать сообщение отдельно
  #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>
Ответить с цитированием