Prüfen ob die Maus sich bewegt

  • GM 7

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

  • tu das ins create event:

    GML-Quellcode

    1. maus_x_bewegung = mouse_x;
    2. maus_y_bewegung = mouse_y;

    das ins step event, die eigentlich abfrage:

    GML-Quellcode

    1. if (maus_x_bewegung == mouse_x && maus_y_bewegung == mouse_y){
    2. //deine aktion (bei stillstand)
    3. } else {
    4. //deine aktion (bei bewegung)
    5. }
    6. maus_x_bewegung = mouse_x;
    7. maus_y_bewegung = mouse_y;


    ich habs nicht getestet, falls es nicht funktioniert...
    EDIT: habs getest funktioniert nicht...
    EDIT2: fehler ausgebessert (so müsste es funktionieren, thx copyboy)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von J@kob ()

  • J@kobs Ansatz war der richtige:

    GML-Quellcode

    1. // Create Event:
    2. lastmouse_x = mouse_x;
    3. lastmouse_y = mouse_y;
    4. // Step Event:
    5. if (lastmouse_x != mouse_x || lastmouse_y != mouse_y) {
    6. // Deine Aktionen hier
    7. }
    8. lastmouse_x = mouse_x;
    9. lastmouse_y = mouse_y;

    Es gibt auch noch die D&D-Alternative mit und .
  • Ich würde es in etwa so lösen:

    GML-Quellcode

    1. // Create-Event
    2. lastmouse_x = mouse_x
    3. lastmouse_y = mouse_y
    4. dir = 0
    5. // Step-Event
    6. dir = point_direction ( lastmouse_x , lastmouse_y , mouse_x , mouse_y ) //-Das gibt dir die genaue Gradzahl wieder.
    7. //Draw-Event
    8. draw_text ( 16 , 16 , "Mausrichtung : " + string ( dir ) + "°." )

    Wenn du jetzt allerdings lieber links - rechts - oben - unten erkannt haben willst, machst du zusätzlich ( nach dem dir = point_direction... )das ins Step-Event:

    GML-Quellcode

    1. if mouse_x != lastmouse_x && mouse_y != lastmouse_y
    2. {
    3. dir = round ( dir / 4 ) * 4
    4. switch dir
    5. {
    6. case 0:
    7. text = "Links"
    8. break;
    9. case 1:
    10. text = "Oben"
    11. break;
    12. case 2:
    13. text = "Rechts"
    14. break;
    15. case 3:
    16. text = "Unten"
    17. break;
    18. }
    19. }
    20. else
    21. {
    22. text = "Keine Veränderung"
    23. }
    Alles anzeigen

    , veränderst das Draw-Event:

    GML-Quellcode

    1. draw_text ( 16 , 16 , "Mausrichtung : " + text )

    und schließlich fügst du noch ins Create-Event dazu:

    GML-Quellcode

    1. text = ""


    Hoffe, das klappt ( habe ich jetzt nicht getestet ).
    Gruß, Phoenix ;)
  • die lösung von phoenix hat ein paar fehler:
    -man muss noch die lastmouse_-variablen am ende jedes steps erneuern, damit er sie auch vergleichen kann.

    -bei point_direction kommt eine gradzahl raus. mit
    dir = round ( dir / 4 ) * 4
    kommt also kein wert zwischen 1 und 4 raus.
    da bräuchte man dann eher round(dir/90)

    -rechts und links sind vertauscht

    ich hab jetz diese version verbessert. mach einfach in step event:

    GML-Quellcode

    1. dir = point_direction ( lastmouse_x , lastmouse_y , mouse_x , mouse_y ) //-Das gibt dir die genaue Gradzahl wieder.
    2. if mouse_x != lastmouse_x && mouse_y != lastmouse_y
    3. {
    4. // dir = round ( dir / 4 )*4
    5. if (dir>=0&&dir<45)||(dir<360&&dir>=315)
    6. {
    7. text="rechts"
    8. }
    9. if dir>=45&&dir<135
    10. {
    11. text="oben"
    12. }
    13. if dir>=135&&dir<225
    14. {
    15. text="links"
    16. }
    17. if dir>=225&&dir<315
    18. {
    19. text="unten"
    20. }
    21. }
    22. else
    23. {
    24. text = "Keine Veränderung"
    25. }
    26. lastmouse_x=mouse_x
    27. lastmouse_y=mouse_y
    Alles anzeigen


    oder nimm die verbesserte version deiner datei:
    maus.rar

    edit: wenn man die maus ziemlich gerade in eine richtung bewegt, funzt es nich so gut , hab leider keine ahnung warum.


  • Ich hab mal ein Beispiel gemacht, das dir hoffentlich alles liefert, was du brauchst ;)

    EDIT:

    lolliger_joj schrieb:

    edit: wenn man die maus ziemlich gerade in eine richtung bewegt, funzt es nich so gut , hab leider keine ahnung warum.
    Das liegt daran, dass die Maus sich nicht ganz gerade bewegt, sondern immer von einem Pixel zum nächsten "springt" ^^"
    Dateien
  • ich frage mich, warum die verbesserte version von phoenix nur so schlecht funktioniert, ich habs im grunde genau wie copyboy gemacht.
    ups:

    copyboy schrieb:

    Ich hab mal ein Beispiel gemacht, das dir hoffentlich alles liefert, was du brauchst ;)

    EDIT:

    lolliger_joj schrieb:

    edit: wenn man die maus ziemlich gerade in eine richtung bewegt, funzt es nich so gut , hab leider keine ahnung warum.
    Das liegt daran, dass die Maus sich nicht ganz gerade bewegt, sondern immer von einem Pixel zum nächsten "springt" ^^"
    aber ich verstehs trotzdem nich... , ich habs genau wie copyboy gemacht


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von lolliger_joj ()