Не понятна строка с if
var pressedKeys = {}; onkeydown = function(e) { if(e.code in pressedKeys) return; pressedKeys[e.code] = true; }; Сначала мы создали пустой объект pressedKeys, потом событие onkeydown. Если(код клавиши в объекте) вернуть; Эта строка проверяет есть ли код клавиши в объекте? Так ведь объект изначально пустой. не понимаю. (Сам оператор if мне понятен) |
Temcher,
если код клавиши записан, то не записывать его снова и снова и снова и снова и снова ... onkeydown это пулемёт :) |
Malleys, зачем извращаться с bind если в api изначально заложена функциональность именно для такого случая:
function PressedKeysRegistry() {} PressedKeysRegistry.prototype = { constructor: PressedKeysRegistry, start: function() { addEventListener("keydown", this); addEventListener("keyup", this); }, stop: function() { removeEventListener("keydown", this); removeEventListener("keyup", this); }, handleEvent: function(event) { if(event.type === "keydown") { if(this[event.code]) return; this[event.code] = true; } else if(event.type === "keyup") { delete this[event.code]; } } }; |
Aetae,
:thanks: |
Цитата:
|
j0hnik,
на всякий случай ... код изначально был из примера Цитата:
|
Цитата:
pressedKeys[e.code] = true; а тут можно и без |
Часовой пояс GMT +3, время: 23:01. |