私はCraftyJSを使ってゲームを開発しようとしています。私は CraftyJS/Chromeが同時にキープレスイベントの数を制限するのはなぜですか?
- クラフティ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)と思われます。しかし、私はまだこれを確認する良い方法を探しています。
キーボードゴーストのような匂い。この[キーボード入力のオンラインデモ](https://www.microsoft.com/appliedsciences/KeyboardGhostingDemo)を実行してみてください。mspx)、それがあなたが得ている結果に対応するかどうかを確認してください。 – mucaho
@mucaho、もっと研究をした後、私はそれがこのようだと考えました。リンクありがとう。私の疑惑を確認できることは良いことです。あなたが答えとしてあなたのコメントを投稿すれば、私はそれを受け入れるでしょう。 – David