Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отслеживание положения элемента (https://javascript.ru/forum/misc/49263-otslezhivanie-polozheniya-ehlementa.html)

illarion 05.08.2014 12:26

Отслеживание положения элемента
 
Здравствуйте, мне надо, что бы как только объект входил в зону происходила событие. Я пробовал так:
var poz_top= $('#fly').offset().top;
		  if ( poz_top > 450 ) {
		    alert ('Text');
			}

Но событие происходит не тогда, когда объект входит в зону, а когда он начинает оттуда уходить. Подскажите, пожалуйста, что надо сделать, что бы это работало правильно.

illarion 05.08.2014 12:39

Во время анимации, например, если объект опустился до top:400. Ну или "вошел" в другой объект.

illarion 05.08.2014 13:23

Хорошо. Объект движется по оси Y. При клике по экрану объект перемещается на то положение оси Y, на котором был клик. Если он заходит слишком высоко или низко, то вылетает сообщение с текстом.
Я сделал так:
$('#fly').animate({ top: evt.clientY },{ queue:false, duration:1000, easing:"linear"});
	     var poz_top= $('#fly').offset().top;
		  if ( poz_top > 450 ) {
		    alert ('Text');
			}
	    return;

Ну и возникает такая ошибка, которая обозначена в начале. Надеюсь с 3-й попытки получилось нормально объяснить проблему=)

illarion 05.08.2014 14:18

Неа, все равно та же проблема. Я так понял все из-за того, что координаты считаются после клика, а не после окончания координат.

Arramis 05.08.2014 14:33

Цитата:

Сообщение от illarion (Сообщение 324357)
Хорошо. Объект движется по оси Y. При клике по экрану объект перемещается на то положение оси Y, на котором был клик. Если он заходит слишком высоко или низко, то вылетает сообщение с текстом.

это делается элементарно.
алгоритм такой:
1) При клике на экран фиксировать координаты этого клика (в вашем случае только у координату)
2) если у координата у движущегося объекта не равна зафиксированной у тогда вылетает сообщение

причем проверять нужно на каждом шаге анимации объекта, а не в конце анимации.
var stateObject = { x: 0, y : 0 };

	document.onclick = function( e ) {
		e = e || event;
		
		stateObject.y = e.pageY;		
	}	
	
	function animStep( obj ) {	
		if ( obj.y !== stateObject.y ) {
			alert ('Text');
		} else return;
	}
примерн так

illarion 05.08.2014 14:58

Arramis спасибо, сейчас будем пробовать!


Часовой пояс GMT +3, время: 22:53.