Показать сообщение отдельно
  #1 (permalink)  
Старый 20.11.2016, 04:45
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Проверка активности движения мышью
Задача заключается в том, чтобы при отсутствии движения мышью над элементом, через N-ное количество времени вызывать функцию.

Код который у меня получился, кажется не совсем грамотным, не смотря на то, что вроде как и работает.
Думаю должно быть более красивое решение.
Прошу подсказать.

scene.addEventListener('mousemove', activity, false);

let move;

function activity(event) {
	if(event) {
		move = true;
		console.log(move);
		clearInterval(interval);
	}
}

setInterval(function() {
	interval= setTimeout(function() {
		move = false;
		console.log(move);
	}, 1000);
}, 1000);


UPD: Нашел следующее решение

let notActiveDelay = 5,
	timeNotActive = 0,
	interval1,
	interval2;

scene.addEventListener('mousemove', activity, false);

function activity() {
	console.log('timeNotActive: 0');
	timeNotActive = 0;
}

function intervals() {
	int1 = setInterval(function() {
		console.log('timeNotActive: ' + timeNotActive);
		timeNotActive++;
	}, 1000);

	int2 = setInterval(function() {
		if(timeNotActive >= notActiveDelay) {
			console.log('Простой');
			clearInterval(int1);
			clearInterval(int2);
			timeNotActive = 0;
			test();
		}
	}, 1000);
}

intervals();

function test() {
	setTimeout(function() {
		intervals();
	}, 5000);
}


Все ли в нем верно?

Последний раз редактировалось spo, 20.11.2016 в 05:33.
Ответить с цитированием