1

CraftyJS を使用してゲームを開発しようとしています。私は使用しています

  • クラフティ 0.7.1
  • クローム 50.0.2661.94
  • ウィンドウズ10
  • 2016 デル XPS15。

キーボード イベントの処理方法に奇妙な点があることに気付きました。これの多くは Chrome や、おそらく私の物理キーボードに関係していると思います。Crafty は、API を使用しているという点でのみ関連しています。

まず、これが私の SSCCE です。このコードは、キーが押されたときにキー配列にキーを追加し、離されたときにキーを削除し、1 秒ごとに配列をログアウトします。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>keyTest</title>
    <script src="../crafty.js"></script>
    <script>
        window.onload = function(){
            Crafty.init(window.innerWidth, window.innerHeight, document.getElementById('game'));
            var keys = [];

            var keyDown = function(e){
                console.log("KeyDown " + e.key);
                keys.push(e.key);
            };

            var keyUp = function(e){
                console.log("KeyUp " + e.key);
                keys.splice(keys.indexOf(e.key), 1);
            };

            Crafty.e("Keyboard").bind("KeyUp", keyUp).bind("KeyDown", keyDown);
            Crafty.e("Delay").delay(function(){console.log(keys)}, 1000, -1);
        };

    </script>
</head>
<body>
<div id="game"></div>
</body>
</html>

私はいくつかの奇妙な動作に気づいています:

  • まず、Crafty は、左右両方の手で入力できない限り、一度に 4 つの文字キーの押下しか認識しないようです。たとえば、ASDFE を一度に押し続けると、次[65, 83, 68, 70]のようになります。 E キーをどれだけ叩いても、認識されないままです。しかし、たとえば ASDFJKL を押したままにすると、次のように表示されます[65, 83, 68, 70, 74, 75, 76]

  • 3 番目の矢印キーが下矢印でない限り、一度に認識される矢印キーは 2 つだけです。たとえば、LEFT、UP、RIGHT を押すと、次のようになります。[37, 38]ただし、LEFT DOWN RIGHT を押すと、次のようになります。[37, 39, 40]

いったいこれで何が起こっているのですか?私の推測では、私の指と私の JS の間の誰かが、誤ったキーの押下 (タイプミス) を巧みに修正しようとしているのですが、誰なのかはわかりません。

編集:これらのキーボードイベントの送信に失敗しているのは、キーボード自体(またはOS)であると思われます。しかし、私はまだこれを確認する良い方法を探しています.

4

1 に答える 1

2

@David が把握したように、この問題はキーボード ゴーストと呼ばれます。

「ゴースト」とは、複数のキーを同時に押すと、キーボードの一部のキーが機能しなくなる問題です。コンピューターに表示されない、または消えたように見えるキーの押下は、「ゴースト化」されたと言われています。ほとんどのキーボードでは、「アンチ ゴースト」として明示的に販売されているものも含め、多くの 3 つのキーの組み合わせでこれが発生します。お気に入りのビデオ ゲームをプレイしていて、たとえば、斜めに走って同時に武器を発射することができないと想像してみてください (たとえば、a、w、および g を同時に押すなど)。これは、既存のほとんどのキーボードの内部設計の結果です...

すべての消費者がゲーミング キーボードを持っているわけではないため (特にこの問題に悩まされていない)、3 つ以上のキーを同時に押す必要のないようにゲームを設計するしかないと思います。

于 2016-05-16T10:30:14.490 に答える