Der Klick, der zum Doppelklick mutiert

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Der Klick, der zum Doppelklick mutiert

    Guten Morgen,

    ich hab da schon wieder ein Problem, für das ich keine Antwort finde, weder in gelöste Fragen noch in der Hilfe.
    Ich erstelle ein Programm a la "Memory", bei dem gleiche Paare gefunden werden müssen. Aber oft passiert das:

    Der Spieler klickt auf eine Karte, um sie umzudrehen - und das Programm macht aus diesem einen Klick hin und wieder einen Doppelklick (oder 2 Klicks??). Die Folge: es werden 2 gleiche Karten auf derselben Stelle entdeckt - obwohl die andere Karte noch gar nicht gefunden wurde! Das bringt natürlich das Ganze Spiel durcheinander.

    Habe jetzt schon an fast jeder Stelle den Puffer gelöscht mit "io_clear()", habe die Masken der Karten ausgeweitet, so dass auch bei Subimages immer alle Bereiche abgedeckt werden - mit mässigem Erfolg. Zwar passiert es jetzt seltener - aber es passiert eben immer noch.

    Hat jemand vielleicht noch eine Idee, was man tun kann, um dieses zu verhindern? Ich habe den Verdacht, dass z.B. die Alarme, die im Hintergrund teilweise laufen, daran nicht unschuldig sind - oder auch was ganz anderes. Jedenfalls habe ich nun keine Idee mehr, was man noch tun kann, um zu verhindern, dass das Programm einen Klick als 2 Klicks interpretiert.
    Kann mir hier bitte jemand behilflich sein? Evtl. eine mögliche Ursache noch nennen, was das auslösen könnte? Timelines werden nicht verwendet, nur Alarme und teilweise animierte Karten. Vielleicht gibt es eine Möglichkeit, grundsätzlich einen Doppelklick zu unterbinden?

    Danke schon mal im voraus für jeden Ansatzpunkt,
    Gruß CB
  • Grundsätzlich ist es schwierig, ohne Code da etwas zu sagen, aber eine Möglichkeit, das Problem zu unterbinden wäre, solange die Karte aufgedeckt wird, keine Mausklicks zuzulassen, also mit einer simplen Abfrage. Aber wie gesagt, ohne Code lässt sich sonst schwer was sagen.

    © 2008 by Teamgrill Productions
  • Vielleicht lieg ich jetzt damit voll daneben, aber hört sich fast so an als würdest du mouse_check_button (bzw. in D&D: :event_mouse: <Mouse>:<Left Button>) anstatt mouse_check_button_pressed bzw. mouse_check_button_released (bzw. in D&D: :event_mouse: <Mouse>:<Left Pressed>/<Mouse>:</Left Released>) verwenden. Damit überprüft der GM nur ob du derzeit über der Instanz die Maustaste drückst, nicht aber ob du sie grade ebend erst gedrückt hast, bzw losgelassen.
    Auch könnte man einen switch einbauen. Also im Create-Event zumbeispiel bFlipped = false; und wenn der Spieler die Karte betätigt hat, wird diese einfach auf true gestellt. Sobald dann die Variable auf true steht, reagiert die Karte auf keinen klick mehr. Die Variable wird dann später einfach wieder auf false gesetzt, wenn sich die Karte wieder umdreht.

    Weiß jetzt nicht, ob das dein Problem ist, aber vielleicht hilft es ja.

    Mfg.,
    Mokuyobi
    木曜日 (Mokuyōbi)
  • MasterXY schrieb:

    aber eine Möglichkeit, das Problem zu unterbinden wäre, solange die Karte aufgedeckt wird, keine Mausklicks zuzulassen
    Schön. Noch schöner wäre es aber gewesen, wenn Du mir sagen kannst, wie man das machen kann.
    "If open >0 ...... " - und wie unterbindet man dann generell einen Mausklick? Ich kann dazu nichts finden, nur wie man Mausklicks bewertet. Leider.

    Gruss CB
  • Naja ich nehmen an, du hast für den Mausklick ein Event. Dort schreibst du vor der Aktion die durch den Mausklick ausgeführt wird, einfach eine bedingte Abbruchstelle, also etwas in der Art:

    GML-Quellcode

    1. if (verhindere_mausklick == 1)
    2. exit;

    Das bricht den Script ab, wenn die Variable wahr ist.
    Außerdem solltest du noch checken ob vll. das was Mokuyobi gesagt hat zutrifft.

    © 2008 by Teamgrill Productions
  • Danke erst mal für die Hinweise.


    Mokuyobi schrieb:

    Vielleicht lieg ich jetzt damit voll daneben, aber hört sich fast so an als würdest du mouse_check_button (bzw. in D&D: :) anstatt mouse_check_button_pressed bzw. mouse_check_button_released (bzw. in D&D: :/:</LEFT Released>) verwenden.

    Ja, das hatte ich auch schon überlegt, aber dem ist nicht so, ich benutze mouse_check_button_pressed. Und da zusätzlich noch bei fast jedem Event der Mauspuffer geleert wird, verstehe ich auch nicht, was das hervor ruft.
    Werde dann wohl nicht drum herum kommen, so eine Variable, wie weiter unten erklärt, einzufügen, um weitere Mausklicks zu verhindern.
    Sollte aber jemand noch eine Idee haben, was die Ursache dafür sein könnte - bin ganz Ohr... :D
    Dank und Gruss,
    CB