Ergebnis 1 bis 3 von 3

Thema: Inelukis Keypatch: Mousedown-Mouseup einzeln abfragen, aber wie?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Inelukis Keypatch: Mousedown-Mouseup einzeln abfragen, aber wie?

    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...

  2. #2
    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.
    Code:
    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.

    Geändert von Ineluki (05.12.2005 um 10:41 Uhr)

  3. #3
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •