Я создаю игру и используя функцию SetTimeout Javascript. Я хочу отслеживать время между каждым движением мыши, и для этого я использую SetTimeout. Проблема в том, что SetTimeout ВСЕГДА вызывается каждые x секунд (например, SetInterval). Я некоторое время смотрел на этот код и, может быть, я неправильно понял, что делает SetTimeout?Проблемы с использованием SetTimeout
Чтобы повторить, моя цель - измерить время между каждым «стоком» мыши, и кажется, что SetTimeout вызывается КАЖДОЕ x миллисекунды вместо одного раза. Пожалуйста, ознакомьтесь с приведенным ниже кодом для получения дополнительной информации.
Опять же, я хотел бы определить «удар» мыши с помощью SetTimeout. После «штриха» мыши (например, рисования линии) происходит пауза (в этом случае я определил это как 25 миллисекунд).
<html>
<head>
<title> My Game </title>
<script type="text/javascript">
timeout = null;
document.onmousemove = function(e) {
var event = e || window.event;
mouseX = event.clientX;
mouseY = event.clientY;
console.log(mouseX+","+mouseY);
clearTimeout(timeout);
timeout = window.setTimeout(
function(){alert("New Mouse Movement")
},25);
}
</script>
</head>
<body>
</body>
</html>
'setTimeout()' используется для запуска функции, выполняемой после указанной задержки. Он не предназначен для измерения времени между двумя событиями. Один вызов 'setTimeout()' приведет к тому, что выполняемая вами функция будет выполняться только один раз, а не раз в каждые миллисекунды, но ваш код вызывает 'setTimeout()' для каждого события mousemove. Проверьте свою консоль - вы увидите, что ваш 'console.log()' встречается один раз за каждый тайм-аут ... – nnnnnn
Одна вещь, которую вы можете сделать, - это зафиксировать дату в нулевой переменной onmousemove, если переменная имеет значение null, если нет, то игнорируй это. Затем установите свой тайм-аут на 25, и если нет движения за 0,25 секунды, подумайте о том, что мышь остановлена, а затем вычитаем из конца. –
Да, именно поэтому я хотел бы определить «удар» мыши с помощью SetTimeout. После инсульта мыши есть некоторая пауза (я определил это как 25 миллисекунд в этом случае) –