kostenloser Webspace werbefrei: lima-city


Mehrfache Tastenabfrage in Javascript?

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    2 Fragen:
    Wenn ich Tasten mit event(.which) abfrage geht das immer nur mit einer Taste. Wie kann ich das ändern?

    Wenn ich eine Taste gedrückt halte wird der "Befehl" das die Taste gedrückt gehalten wird bzw. das mehrfache ausführen des Befehls der der taste zugewiesen ist erst ausgeführt wenn die Taste mehrere millisekunden gedrückt wird. Aber wie kann ich in Javscript dafür sorgen das der befehl sofort immer wieder beim gedrückt halten ausgeführt wird, vergelchbar wie in einem Spiel in dem man mit einer taste nach vorne geht. Das das geht hab ich schon in einigen Javascript Engines gesehen aber durch die komplexität der befehle in den Codes kann man sich da nur schwer was entnehmen.

    Beitrag zuletzt geändert: 19.5.2010 20:42:23 von krisi12345
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Kenne mich mit JavaScript jetzt nicht wirklich aus, aber ich würde nach solchen Events Ausschau halten, die nicht gemeldet werden, wenn eine Taste heruntergedrückt ist, sondern wann die Taste heruntergedrückt und wann sie wieder losgelassen wird. Den Status von Tasten müsstest du dann zwischenzeitlich in irgendwelchen Variablen speichern. Diese kannst du dann irgendwo anders im Programm abfragen, und deine Befehle dementsprechend ausführen. So sind auch mehrere Befehle gleichzeitig machbar.

    Beitrag zuletzt geändert: 19.5.2010 21:20:20 von tangoal
  4. Mannometer der tangol bringt immer so gute Beiträge, das ist unfassbar, selbst wenn er nur etwas rumrät hat er Recht, denn es ist schlicht so wie er es gesagt hat, als Beispiel hier mal ein Code, der das aufzeigt:
    (function(){
    /*
     * Taste gedrückt halten
     */
    window.taste = {}
    taste.welche = {};
    taste.event = {};
    taste.druecken = function(e){
    	e = e || window.event;
    	key = e.keyCode;
    	welche_taste['keyCode_'+key] = true;
    };
    taste.loslassen = function(e){
    	e = e || window.event;
    	key = e.keyCode;
    	welche_taste['keyCode_'+key] = false;
    };
    taste.waerend_dedruekt = function(key, fn, params){
    	if(key && fn){
    		tasten_event['keyCode'+key] = [fn, params || {}];
    	}else if(key){
    		tasten_event['keyCode'+key] = undefined;
    	}else{
    		for(var i in welche_taste){
    			if(welche_taste[i] === true && tasten_event[i].length == 2)
    				tasten_event[i][0](tasten_event[i][1]);
    		}
    	}
    };
    window.setInterval(taste.waerend_gedrueckt, 10);
    document.onkeydown = taste.druecken;
    document.onkeyup = taste.druecken;
    })()
    Ein Event hinzufügen solltest du da einfach taste.waerend_dedruekt(tastencode, funktion, parameter in einem Object) aufrufen können, aber da geb ich weiß Gott keine Garantie drauf, da ich normalerweise stets versuche um solche komischen Abfragen nach den Tasten etc. drum herum zu kommen, habe ich nämlich kaum Erfahrung auf dem Gebiet.
    In meinen Augen wäre ein Einsatz auch eigentlich nur bei Browsergames auf JS-Ebene interessant.

    Beitrag zuletzt geändert: 19.5.2010 22:37:42 von nemoinho
  5. @nemoinho: solche Probleme tauchen auch in anderen Programmiersprachen auf. Ich projiziere Probleme gerne auf eine logische Ebene, die eine universelle Lösung in (fast) allen Programmiersprachen erlaubt. Den speziellen Code wie es in einer Programmiersprache dann tatsächlich umgesetzt wird, findet man echt schnell raus, wenn man weiß wonach man genau suchen muss :-) Aber mit JS kenn ich mich wirklich überhaupt nicht aus. Das wäre eines meiner nächsten Angriffsgebiete, nachdem ich den Kram mit PHP schön aufgearbeitet habe...^^
  6. @tangoal: geht mir genauso, mit dem Vergleich zwischen verschiedenen Sprachen.
    Zum Beispiel hat der user aklasse ja letztens dieses komische Spiel vorgestellt, dass ich auf Grund der probitären Software auf Linux nicht benutzen kann, und welches genau in den bereich programmieren geht, wo ich eher von Klickibunti-Spielerein spreche, als von Programmieren, naja ich hab mir gleich überlegt, dass das Spiel als Javascript-Browsergame wesentlich Sinnvoller wäre, und vermutlich sogar kleiner, als die 130KB des Originals.
  7. @nemoinho: achso, dieses Reaktions-Spiel mit den Bällen meinst du, oder? Ja, gut. Es ist ja mit VB geschrieben, denke ich. An sich ist VB keine schlechte Sache. Das ist die intuitivste Programmiersprache, die ich kenne. Wobei du da wirklich recht hast. Es gibt einen Unterschied zwischen Programmieren und Programmieren. Nur solches Klickibunti ist doch keine Programmierung. Es ist ein Teil davon. Ein ziemlich kleiner, aber trotzdem immer bedeutend werdender Teil. Von daher ist es sicherlich nicht verkehrt sich auch da schlau zu machen^^ Im End-User-Markt gibt es überhaupt keine Kommandozeilen-Programme mehr. Da muss alles grafisch aufbereitet sein (und intuitiv). Aber was soll's. Ich glaub, dass geht jetzt etwas über die ursprünglich gestellte Frage hinaus... :-)
    Sowas könnte man gut bei einem Bierchen klären^^
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!