PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastenpatch Geheimnisse



Ryo Saeba 1000
21.11.2006, 17:54
Ob dies ein Geheimnis ist oder nicht.. mir war dies bisher nie aufgefallen.

Ich ging bis jetzt immer davon aus, dass der Keypatch immer nur in dem Moment etwas registriert, wenn eine Taste gedrückt oder wenn sie losgelassen wird.
Er liefert aso einen Wert an die Vari, wenn man die Taste drückt und wenn man sie loslässt, nicht aber während man die Taste gedrückt hält.

Nun habe ich darauf mein Projekt aufgebaut und bin auf etwas imho merkwürdiges gestoßen:

Ich hab das Problem mal als kleines Testprojekt verpackt und hochgeladen.
komisch.zip (http://www.goryosaeba.de/ftp/komisch.zip)
Im Projekt wird die rechte und untere Pfeiltaste per Keypatch in einem PP-Mapevent abgefragt. Sowohl bei einem Tastendruck als auch beim Loslassen werden entsprechend die vier ersten Variablen jeweils um den Wert "1" erhöht (außerdem hab ich mal einen Sound abspielen lassen, um das ganze zu verdeutlichen).
Um den "Fehler" zu erzeugen muss man wie folgt vorgehen:
wenn man im Projekt die rechte Pfeiltaste drückt und gedrückt hält, dann währenddessen die untere Pfeiltaste drückt und gedrückt hält und nun während man die untere weiterhin gedrückthält, die rechte loslässt, und dann nach ein paar weiteren Sekunden die untere auch wieder loslässt und dann einen Blick mit F9 auf die ersten 4 Variablen wirft, dann sieht man, dass die Variable für das Drücken der unteren Pfeiltaste den Wert "2" hat, während die anderen auf "1" stehen.

Eigentlich hat man ja nur ein mal die rechte Pfeiltaste gedrückt, einmal die untere gedrückt, einmal die rechte losgelassen und einmal die untere losgelassen.
Eigentlich müssten doch nun alle Variablen auf "1" stehen, aber beim loslassen der rechten Pfeiltaste, wird gleichzeitig ein "neuer Druck" der unteren Pfeiltaste registriert, obwohl man nicht neu gedrückt hat, sondern immer noch drauf ist.

Bevor ich versuche Ineluki damit auf den Geist zu gehen, würde ich doch gern wissen ob jemand von euch das Problem kennt, oder ob ich einfach irgendwo einen Fehler im Projekt hab (was mMn unwahrscheinlich ist, so klein wie das ist).
Ist jetzt nicht so, dass ich meinen Code nicht umschreiben könnte, um das Problem zu umgehen, aber es würde gern noch ein paar weitere Meinungen dazu einholen oO

Alternativ kann der Thread natürlich auch missbraucht werden, um auf andere "Merkwürdigkeiten" des Keypatches einzugehen, ich bin sicher da gibt es noch mehr zu lüften.

Caine Luveno
21.11.2006, 20:52
Der Keypatch registriert "Drücken" und "Loslassen" d.h. wenn du die untere Taste loslässt, nimmt der Patch das auch war und speichert diesen wert.

Könnte es sein das das eventuell auch ein Fehler deiner entsprechenden .script.wav Datei sein kann? Ich kann mir das Projekt grad net saugen weil ich nicht zu hause bin.

Könnte ja sein das der Patch nachdem die rechte Taste losgelassen wurde alle Tasten neu prüft bzw. muss ja so sein um den neuen Tastenstatus zu erhalten. Dabei bemerkt er wohl das unten auch gedrückt ist und sendet das ein zweites Mal.

Vielleicht auch tatsächlich 'n Bug?

CapSeb
23.11.2006, 14:45
Eigentlich hat man ja nur ein mal die rechte Pfeiltaste gedrückt, einmal die linke gedrückt, einmal die rechte losgelassen und einmal die untere losgelassen.
statt "linke" gehört da doch "untere" hin, oder? :rolleyes:


Könnte ja sein, dass der Patch nachdem die rechte Taste losgelassen wurde alle Tasten neu prüft bzw. muss ja so sein um den neuen Tastenstatus zu erhalten. Dabei bemerkt er wohl, dass unten auch gedrückt ist und sendet das ein zweites Mal.
Das kann nicht sein.
Im Maker funktioniert bei den normalen Richtungstasten folgendes: Läuft man in eine Richtung und drückt eine zweite Richtungstaste zusätzlich, geht man in diese neue Richtung. Beim Loslassen der späteren Taste bewegt man sich wieder in die ursprüngliche Richtung, denn die erste Taste wurde ja nie losgelassen.

Beim Tastenpatch funktioniert das nicht, da er beim Drücken den alten Wert der ersten Taste überschreibt. Beim gleichen Vorgehen wie im oberen Beispiel (dort standard Tastenabfrage) bleibt man daher zum Schluss stehen, obwohl eine Richtungstaste festgehalten wird.

Bei meinem Spiel musste ich die normale Maker Tastenafrage simulieren. Würde deine Vermutung stimmen, wäre das nicht notwendig gewesen.

Da das Problem aber tatsächlich existiert, muss deine gefundene Anomalie nur in bestimmten Situationen gelten...
Ich guck mir jetzt erstmal dein Test-Projekt an :)

Ryo Saeba 1000
23.11.2006, 21:30
statt "linke" gehört da doch "untere" hin, oder? :rolleyes:

Ahja, natürlich xD thx das du mich drauf aufmerksam machst, ich editier mal eben..



Könnte es sein das das eventuell auch ein Fehler deiner entsprechenden .script.wav Datei sein kann?
Schön wäre es, das wäre ja schnell zu beheben, wenn du einen Fehler finden solltest, nur her damit, ich hab aber keinen bemerkt.

Gekiganger
28.11.2006, 01:22
Ich kann deine Feststellung, Ryo, bestätigen.
Allerdings habe ich das selbe noch einmal mit Gamepad getestet, welches über Joy2Key die Tastatur simuliert und dort funktioniert es, wie es eigentlich gedacht sein sollte, sprich, Right- und Down- Events werden nur dann an an die (oder von der) Harmonyschnittstelle gesendet, wenn sie auch wirklich für die jeweilige Taste stattfinden und nicht mehrere zusammen.
Es muss sich wohl also um einen allgemeinen "Fehler"(?) bei der Übertragung von Tastendrücken auf Standardtastaturen handeln.

Am besten stellst du das in den Detailwissen Thread mit der Anleitung zu einem eigenen Eventhandlingsmechanismus mit maker'schen Mitteln, um dieses Problem zu umgehen.