Не понятна строка с 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:33. |