PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inelukis Keypatch: Mousedown-Mouseup einzeln abfragen, aber wie?



Caine Luveno
23.11.2005, 19:59
Folgendes, ich verwende den Keypatch für Maus und Tastatureingaben. Das klappt alles auch soweit ganz gut. Bloß folgendes Problem:

Im Paralell Process Event in dem die Mauseingabe abgefragt wird, befindet sich beispielsweiße eine Message. Klickt man mit der Maus erscheint die Message. Drückt man die Message weg kommt sie aber ein zweites Mal.

Mal n bischen Code zur Veranschaulichung:

Fork Option(Var:MouseInput=1) {
ShowMessage: Blah
}
Wait 0,0s

Dabei erscheint die Message zweimal. Hierbei nicht:

Fork Option(Var:MouseInput=1) {
Fork Option(Switch:MouseCycle2=On) {
Showmessage: Blah
ChangeSwitch: Mousecycle2 switch off
} else {
ChangeSwitch: MouseCycle2 switch on
}
}
Wait 0,0s

OK, damit kriege ich meine Messages nicht mehr doppelt und Soundeffekte werden auch nicht mehr doppelt abgespielt wenn sie sich in der Abfrage befinden. Das Problem ist nur das ich exakt abfragen können müsste WANN die Maustaste nach oben geht. Denn da ich bestimmte Klicks per Coodinaten abfrage um unterschiedliche Sachen auszulösen Z.B. im Menü, gibt es ein leichtes Eventchaos wenn man die linke Maustaste gedrückt hält und dann einmal quer über den Bildschirm fährt da die Variable MouseInput scheinbar immer den Wert 1 hat (bis die Taste losgelassen wird).

Weiß zufällig jemand ob das überhaupt möglich ist das der Keypatch Mousedown und Mouseup unterscheiden kann? Denn in Inelukis Dokumentation die beim Keypatch dabeiliegt habe ich nichts gefunden. Falls ja, wie fragt man Mousedown und Mouseup unterschiedlich ab? Wenn das nicht geht wäre das sehr sehr schade...

Ineluki
23.11.2005, 21:38
ich versteh dein Problem leider nicht ...

Wenn du GetMousePos.script.wav ausfuehrst, dann stehen in den Queue doch 4 Werte

1. MouseID
2. MouseX
3. MouseY
4. MouseTasten

MouseTasten kann 4 Werte annehmen:
Kein MausTaste: 0
Linke MausTaste: 1
Rechte MausTaste: 2
Beide MausTaste: 3

Du kannst nun MouseDown bzw MouseUp dadurch testen, dass du testest, ob MausTaste 0 bzw 1 ist.

Du kannst z.B. folgendes machen.


Fork MouseTaste SAME 0
ChangeSwitch LinkeMaustaste OFF
ChangeSwitch RechteMaustaste OFF
EndFork
Fork MouseTaste SAME 1
ChangeSwitch LinkeMaustaste ON
ChangeSwitch RechteMaustaste OFF
EndFork
Fork MouseTaste SAME 2
ChangeSwitch RechnteMaustaste ON
ChangeSwitch LinkeMaustaste ON
EndFork
Fork MouseTaste SAME 3
ChangeSwitch LinkeMaustaste ON
ChangeSwitch RechteMaustaste ON
EndFork


Dann kannst du unterschiedliche Routinen fuer LinkeMouseTaste ON bzw OFF schreiben. Und damit kannst du dann auch Ueberpruefen, wann du mit Ziehen anfaengst und wann du mit ziehen aufhoehrst.

Caine Luveno
28.11.2005, 18:16
OK, das wäre ne Möglichkeit.

Sobald Taste Links gedrückt wird geht der Switch auf ON. Solange gezogen wird bleibt er On. D.h. ich muss dann ne Schleife starten die solange läuft bis der Switch wieder Off ist, also die Taste losgelassen wird um das MouseUpEvent zu kriegen. Sehe ich das so richtig?

Auf jeden Fall ist die Idee die Maus erst einmal mit switchen zu belegen gar nicht übel. So hab ich nicht immer die Fork MouseInput=1 mitten im Code.... LinkeTaste=On macht das ganze etwas übersichtlicher und besser verständlich.