Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2015, 04:38
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Нужна помощь по setTimeout
Делаю простенький видеоплеер с помощью <video>
Хочу сделать так, чтобы панель с кнопками внизу скрывалась через 3 секунды после последнего движения мышки.

<div id="controlbar" style="visibility: hidden;"></div>// ну якобы панель с кнопками


document.getElementById("videoPlayer").onmousemove = function() {
	clearTimeout(timer); // сбиваю запущенный на предыдущем движении мышки таймер
	showcontrolbar(); // показываю панель
	var timer = setTimeout(hidecontrolbar, 3000); // скрываю панель через 3с
}

В итоге получаю следующее: если двинуть мышкой и не трогать, то все корректно, а если двигать мышкой в течении 5+ секунд, то через 3 секунды панель начинает адово мигать, т.к. не прекратившееся движение мыши вызывает панель, а таймер из прошлого скрывает ее.

Как сделать так, чтобы панель появлялась при первом же сдвиге мышки и пропадала после того как перестать ею двигать на 3 секунды?


p.s. Функциии showcontrolbar и hidecontrolbar - по одной строчке кода. Банальное управление стилем visibility через document.getElementById
p.s.s Если в начале функции прописать
if (timer) alert("i`m alive!");
то ничего не произойдет! Выходит, мой clearInterval ничего не останавливает, т.к. на момент запуска функции почему-то нету такого таймера, хотя он по любому должен был работать с предыдущего движения мышки.
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2015, 20:01
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от CraftLawrence
var timer
нужно объявить вне текущего скоупа, тоесть вне функции onmousemove
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2015, 15:42
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

Лови привет от Viral
Ответить с цитированием
  #4 (permalink)  
Старый 27.07.2015, 21:33
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от devote Посмотреть сообщение
нужно объявить вне текущего скоупа, тоесть вне функции onmousemove
Сообщение от DynkanMaclaud Посмотреть сообщение
Лови привет от Viral
Боже мой, спасибо огромное)
Все работает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
нужна помощь тех кто разбирается. igoryk jQuery 2 20.10.2010 19:42
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17