私はこのゲームを作っています(インベーダークローン:https://codepen.io/laughingskull/pen/NaWWzE?editors=0010)。私は船を左右に動かしたいと思っています。そして、コントロールが押されると、船が撃ちます。 問題はリリース制御であり、船の動きが止まったときです。 私はKeyDownイベントには、この関数をバインドしていますキーアップが発生した後にkeydownイベントを続ける方法
checkKey: function(e) {
e = e || window.event;
if (e.keyCode in map) {
map[e.keyCode] = true;
e.preventDefault();
GAME.respond();
}
、これはkeyUpイベントする:
clearKey: function(e) {
e = e || window.event;
if (e.keyCode in map) {
map[e.keyCode] = false;
}
if (e.keyCode === 17){
GAME.respond();
}
GAME.respond()は次のようになります。押され
respond: function(){
console.log("map", map);
if (map[17]) {
SHIP.shoot();
}
if (map[37]) {
SHIP.move(LEFT);
return;
}
if (map[39]) {
SHIP.move(RIGHT);
return;
}
if (map[38]) {
SHIP.move(UP);
return;
}
if (map[40]) {
SHIP.move(DOWN);
return;
}
},
キーを経由してマッピングされていますマップオブジェクト(他の場所で宣言されています)。 矢印キーがまだ何も起こらなくても、keyupイベントが発生した後に問題が発生します。どのように私は押されたキーを復元できますか?
Phaser.jsインベーダーの例を見てください。その実装方法は、あなたのやり方をヒントにします。 http://phaser.io/examples/v2/games/invaders – IamSilviu