Ich will das der Cursor auf die Makerfelder zugreift (32 x 32 px) Allerdings soll sich der Cursor trotzdem noch nach pixeln bewegen. Ich will nämlich für einen längeren button keine 3072 Conditional Branches machen. (96 x 32 = 3072)
Ich wäre ziemlich dankbar.
Inwiefern soll er auf die Felder zugreifen?
Das musst du genauer beschreiben.
Ansonsten kannst du ja die Pixelkoordinaten des Mauszeigers auf Makerkoordinaten umrechnen. Einfach jewals die X und Y Koordinaten durch 32 teilen.
Du brauchst für einen längeren Button auch nicht soviele Forks machen. Du kannst ja auch simpel abfragen ob sich der Mauszeiger innerhalb eines Bereiches befindet. Wenn der Button z.B. von den X Koordinaten 32 bis 64 geht und von der Y-Koordinate 12 bis 30 geht, dann stellst du denn Fork einfach so ein das er überprüft ob die X Koordinate über 32 ist. Natürlich muss dann auch ein Fork folgen der abfragt ob die X Koordinate noch unter 64 ist.
Das gleiche auch bei Y-Koordinate.
Genauso hab ich es in meinem Projekt gemacht. Hab mir ein eigenes Hauptmenü zusammengebastelt, da sind jetzt momentan 5 Buttons übereinander. Einer der Menüpunkte zeigt kurz einen Vorspann und springt dann ins Menü zurück (ist bisher der einzige Menüpunkt der funktioniert) Geht auch sehr gut, allerings hab ich festgestellt dass er weiterhin die Position des Zeigers und Mausklicks speichert, obwohl das Menü-Event (in dem ist Mouse.update() drin) gar nicht läuft. Wenn er dann ins Menü zurück kehrt, führt er augenblicklich alle Mausbewegungen/Mausklicks durch die während des Vorspanns gemacht wurden... Ich würde gern für die Dauer des Vorspanns das Mausscript "abschalten" und Mouse.disableSaveToGame() hilft da leider nicht... ich kenne mich mit Ruby leider nicht so gut aus, gibt es eine Art "Gegenbefehl" zum Mouse.initSystem(), also einen Befehl der das Mausscript wieder abschaltet?
Nein, da ist so ziemlich das selbe Problem vorhanden. Bei der Scriptdemo läuft das so ab:
Ich klicke auf den Bildschirm.
Ein Textfenster geht auf um zu zeigen wohin ich geklickt habe.
Ich klicke nochmal auf den Bildschirm, BEVOR ich das Fenster mit "Enter" schließe.
Ich schließe das Fenster.
Sofort geht ein neues Fenster auf um mir die Koordinaten des zweiten Klicks anzuzeigen.
Aber egal, ich hab das Problem inzwischen mit ner Vereinfachung der ganzen Prozedur beheben können:
Bisher hatte ich die ganzen Scriptbefehle (Mouse.initSystem und Mouse.update) in das Menü mit eingebunden. Jetzt habe ich ein Common Event nur für die Mausunterstützung angelegt, das Parallel läuft wenn ich den Switch 0002 aktiviere:
So läuft die Mausunterstützung stets parallel nebenher und in den Menü-Events muss ich nur noch per Switches 3 und 4 überprüfen ob geklickt wurde. Dadurch dass der jeweilige Switch auch nach einem Frame bereits wieder ausgeschaltet wird hab ich auch ein anderes Problem behoben dass ich heute morgen entdeckt hab: Ich hab für die fünf Buttons in meinem Menü ja einen "möglichen Klickbereich" festgelegt. Wenn der Cursor nun außerhalb des Bereichs liegt und ich klicke, dann wurde dieser Klick ausgeführt sobald ich den Cursor auf den Button bewegt hab, aber wie gesagt: Jetzt ist das behoben xD