Transformator
New member
Hey!
Wie vielleicht schon einige von euch schon bemerkt haben (indem sie andere Posts von mir gelesen haben) programmiere ich gerade ziemlich viele verschiedene JavaScript-Canvas Spiele. Bei diesen Spielen kann der Spieler dann durch Tastendruck (meistens die Pfeiltasten) das Spiel steuern.
Dafür habe ich eine Variable erstellt und diese "keystate" gennant. Immer wenn ein Spieler eine Taste drück wird in diese Variable (Array) ein Element mit dem Keycode auf "true" gesetzt. Der Code dafür war folgendermaßen:
Nun Gibt es mehrere Probleme damit.
Nummer 1: wenn man zwei Tasten gleichzeitig drückt steht in meinem Array nur die zuletzt gedrückte Taste.
Nummer 2: wenn man eine Taste nicht einmal kurz drückt sondern gedrückt hält, ist der Keycode keinesfalls immer auf "true" sondern verhält sich folgendermaßen:
Es scheint so, als ob mein Firefox das Tastendrücken "smooth" machen will oder so.
Die Frage ist, wie kann ich das alles fixen? (das 1. Problem ist das wichtigste)
Wie vielleicht schon einige von euch schon bemerkt haben (indem sie andere Posts von mir gelesen haben) programmiere ich gerade ziemlich viele verschiedene JavaScript-Canvas Spiele. Bei diesen Spielen kann der Spieler dann durch Tastendruck (meistens die Pfeiltasten) das Spiel steuern.
Dafür habe ich eine Variable erstellt und diese "keystate" gennant. Immer wenn ein Spieler eine Taste drück wird in diese Variable (Array) ein Element mit dem Keycode auf "true" gesetzt. Der Code dafür war folgendermaßen:
Code:
//setzen der keycodes
keystate = {};
document.addEventListener("keydown", function(evt) {
keystate[evt.keyCode] = true;
});
//abfragen
//...in einem loop
if(keystate[32]) { // SPACE
// do something;
}
keystate = {};
Nun Gibt es mehrere Probleme damit.
Nummer 1: wenn man zwei Tasten gleichzeitig drückt steht in meinem Array nur die zuletzt gedrückte Taste.
Nummer 2: wenn man eine Taste nicht einmal kurz drückt sondern gedrückt hält, ist der Keycode keinesfalls immer auf "true" sondern verhält sich folgendermaßen:
Code:
// alle 150 Millisekunden
{32: true}
{32: false}
{32: false}
{32: false}
{32: false}
{32: false}
{32: true}
{32: true}
{32: true}
// ... ab jetzt immer true
Es scheint so, als ob mein Firefox das Tastendrücken "smooth" machen will oder so.
Die Frage ist, wie kann ich das alles fixen? (das 1. Problem ist das wichtigste)