Я работаю над игрой Phaser CE , которая поддерживает как мышь / сенсорный ввод, так и ввод с клавиатуры для выполнения различных действий.
Проблема в том, чтоигра запускается внутри iframe , и клавиатурный ввод работает правильно, пока холст не потеряет фокус.Игра делает паузу, что является правильным поведением, затем я снова щелкаю внутри холста, игра продолжается, и ввод мыши все еще работает.Но теперь клавиатурный ввод больше не работает.Когда игра не запускается внутри iframe, это не проблема, клавиатура продолжает работать после потери фокуса, паузы и затем продолжения.
Нужно ли использовать что-то кроме «game.input.keyboard».addCallbacks "проверить ввод с клавиатуры?Ниже приведен минимальный код для воспроизведения этой проблемы.
mygame.GameState.prototype = {
create: function() {
this.stage.backgroundColor = "#f0f";
this._levelindex = 0;
// ..
// etc.
// game input for mouse and keyboard
this.game.input.onDown.add(this.onGameMouseDown, this); // mouse/touch
this.game.input.keyboard.addCallbacks(this, this.doGameKeyInput, null, null); // keyboard
// ..
},
onGameMouseDown: function(evt) {
// code.. ok works fine
},
doGameKeyInput: function(key) {
var kc = key.keyCode;
var action = 0;
if (kc == 32) {action = 1}; // space
if (kc == 90) {action = 2}; // Z
if (kc == 88) {action = 3}; // X
// etc. this works until canvas loses focus
}
}
Кроме того, я создал страницу, чтобы изолировать и воспроизвести эту проблему, см. тест клавиатуры .