1

私はCraftyJSを使ってゲームを開発しようとしています。私は CraftyJS/Chromeが同時にキープレスイベントの数を制限するのはなぜですか?

  • 2016デルXPS15

    • クラフティ0.7.1
    • クローム50.0.2661.94
    • のWindows 10を使用しています。

    キーボードイベントの処理方法に奇妙な点があります。 私はこのことの多くがクロムと関係がありますか、あるいは 私の物理的なキーボードだと思っています。そのCraftyは、私が のAPIを使用しているという点でのみ関連しています。

    まず、私のSSCCEがあります。このコードは、キー配列が押されたときにキー配列にキーを追加し、キー配列が解放されるとそれを削除し、毎秒配列をログアウトします。

    <!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> 
    

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

    • まず、彼らは右と左の両方を使用して入力することができない限り、狡猾のみ、一度に4文字のキー押下を認識するように見えますハンド。たとえば、ASDFEを一度に押し続けると、次のようになります。[65, 83, 68, 70] Eキーは、どれほど大きくしても認識されません。しかし、例えば私がASDFJKLを押し続けていると、私は次のように見ています:[65, 83, 68, 70, 74, 75, 76]

    • 3つ目が下矢印でない限り、2つの矢印キーのみが同時に認識されます。 [37, 38]しかし、LEFT DOWNでRIGHT結果:LEFT、UP、RIGHT結果の押圧例えば[37, 39, 40]

    を何地球上では、これでアップしているのですか?私の推測では、私の指と私のJSの間の誰かが誤ったキー入力(誤植)を賢明に修正しようとしていますが、私は誰を知らないのですか。

    EDIT:キーボードのイベントを送信していないキーボード自体(またはOS)と思われます。しかし、私はまだこれを確認する良い方法を探しています。

  • +0

    キーボードゴーストのような匂い。この[キーボード入力のオンラインデモ](https://www.microsoft.com/appliedsciences/KeyboardGhostingDemo)を実行してみてください。mspx)、それがあなたが得ている結果に対応するかどうかを確認してください。 – mucaho

    +0

    @mucaho、もっと研究をした後、私はそれがこのようだと考えました。リンクありがとう。私の疑惑を確認できることは良いことです。あなたが答えとしてあなたのコメントを投稿すれば、私はそれを受け入れるでしょう。 – David

    答えて

    2

    @デビッドは問題がkeyboard ghostingと呼ばれ、考え出したように:

    「ゴースト」とは、複数のキーが同時に押されたときに、いくつかのキーボードのキーが動作しないという問題があります。コンピュータに表示されない、または消えたように見えるキープレスは、「ゴースト」されていると言われています。ほとんどのキーボードでは、「アンチゴースト」として明示的に販売されているものでさえ、これは多くの3つのキーの組み合わせで発生します。あなたの好きなビデオゲームをプレイし、対角線上を走り抜けたり、同時に武器を発射できないと想像してみてください(例えば、a、w、gを同時に押すなど)。これは、必ずしもすべての消費者は(特にこの問題に悩まされない)のゲーミングキーボードを持っているので...

    ほとんどの既存のキーボードの内部設計の結果である、私はあなたがすることができる唯一のことはあると思います3つ以上のキーを同時に押さなくてもゲームをデザインすることができます。

    関連する問題