TIMON666
@TIMON666

Как вычислить время зажатия?

Делаю для практики мини веб игру, и нужно сделать элемент управления для div.
Я придумал такое решение: при нажатии на блок(всего 4: вверх, вниз, влево, вправо), запустить таймер значение которого записывается в переменную, которая в свою очередь подставляется в style.margin = переменная + 'px';
В общем, как это осуществить без библиотек?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 2
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
вам не нужен таймер для этой цели. достаточно в момент нажатия запомнить текущее время а в момент отжатия от текущего времени вычесть запомненное.
// переменная, в которую запоминаем время
let pressedTime = Date.now();

...
// при нажатии  
pressedTime = Date.now();

...

// при отжатии
const passedTime = Date.now()-pressedTime;
console.log("С момента нажатия прошло", passedTime, "миллисекунд");
console.log("С момента нажатия прошло", passedTime/1000, "секунд");


// при отрисовке внутри цикла window.requestAnimationFrame(loop);
if( кнопка нажата ){
   const passedTime = Date.now()-pressedTime;
   style.margin = (parseInt(style.margin)+passedTime/100) + 'px';
}


если вам нужно более точное время чем миллисекунды то вместо Date.now() используйте performance.now()

ну и вот еще посмотрите для реализации цикла игры https://developer.mozilla.org/ru/docs/DOM/window.r...

вот наваял простенький вариант:
Ответ написан
wapster92
@wapster92 Куратор тега JavaScript
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы