Interaktives Menü

  • GM 8

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

  • Interaktives Menü

    Joah ich hab mal nen kleinen Menüprototypen gebastelt und bin schon auf ein Problem gestoßen,
    hoffe ihr könnt mir helfen.

    Also am besten ihr ladet es euch kurz dann seht ihr es am besten.

    Also ich hebe die buttons immer hervor wenn ich mit der maus über sie geh,
    und mit linksklick macht er halt seine funktion,
    soweit so gut,
    wenn ich jetzt aber z.b. auf settings klicke, ist mein mauszeiger im nächsten room ja sofort auf sound und demnäch erkennt er nicht dass sich die maus auf dem button befindet und changed somit nicht das objekt und auch nicht den room bei klick.
    Sondern erst wenn ich wieder einmal vom button runter geh und wieder rauf.
    Das selbe auch wenn ich z.b. auf setting/video geh und dann back klicke bin ich danach ja auch schon auf dem 2. back button und er erkennt es nicht, sondern erst wenn ich einmal runter und wieder rauf geh.

    Hoffe ihr versteht was ich meine,
    habt ihr nen Vorschlag wie ich das ändern kann?

    Hier ist die .exe zum menü:
    multiupload.com/T74TEKIQF0
  • Ich hoffe ich versteh was du meinst...
    Dieses Event darfst du nicht machen: :event_mouse:
    Du musst im Step-Event ( :event_step: ) überprüfen ob die mouse_x und mouse_y zwischen den Koordinaten sich befindet und dann klappts. So mach ich das eig. immer. Ich hoffe du verstehst mich

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Habs mir jz nicht gedownloadet, aber denke stark du benutzt das over und out event.
    Das reagiert nur, wenn die Maus auf die Instanz drauf, oda von ihr runter geht. Es überprüft nicht ob die Maus sich auf dem Objekt weiterhin befindet, das Event wird also nur einmal ausgeführt.
    Problem bei der Sache, welches du auch anscheinend hast, das nun wenn die Maus sofort drauf ist, diese Over Event nicht ausgeführt wird.

    Problem kann man ganz einfach lösen (am besten über Trigger falls du den GM Pro hast): Überprüfe ob die Maus sich auf der Instanz befindet.

    Genau weil ich das auch öfter für meine Buttons benutze, hab ich daraus nen Skript gemacht.

    mouse_over

    GML-Quellcode

    1. // mouse_over(prec);
    2. // Gibt wieder, ob sich die Maus über der Instanz befindet.
    3. if argument0 == true {
    4. if instance_position(mouse_x,mouse_y,id)
    5. return true;
    6. else
    7. return false;
    8. } else {
    9. if mouse_x > x-sprite_xoffset && mouse_x < x-sprite_xoffset+sprite_width &&
    10. mouse_y > y-sprite_yoffset && mouse_y < y-sprite_yoffset+sprite_height
    11. return true;
    12. else
    13. return false;
    14. }
    Alles anzeigen


    Gibt wieder ob sich die Maus über dem Objekt befindet. Wenn prec = true ist, wird dies Pixelgenau überprüft, falls es false ist wird dies nicht Pixelgenau sondern nur als Viereckige Fläche überprüft.

    Mfg.,
    Mokuyobi
    木曜日 (Mokuyōbi)
  • Jo das wirds wohl sein,
    hab bis jetzt aber noch nie eigene Sachen/Scripts eignebracht sondern nur eingebaute Sachen verwendet.

    Also das Script hab ich schonmal geschafft zu erstellen ^^

    Wie kann ich das denn jetzt einbinden?
    Also dass es dann wenn eben die maus über nem button ist, es das object wechselt?
    Sprich wie krieg ich das mit den buttons verbunden etc?
  • Geht viel einfacher :)

    Ich denke du hast für jeden Button ein eigenes Objekt. Setze dort einfach im Step-Event foglenden Code hinein:

    :event_step: Step

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,self){
    2. sprite_index = sprOver;}
    3. else{
    4. sprite_index = sprNone;}


    So wird ständig geprüft ob die Maus sich auf dem Objekt befindet.
    Musst nur noch die die Bezeichnungen für die Sprites abändern.

    Dann kannst du das ganze mouse_enter und mouse_leave weglassen :)

    Gruß,
    Shari
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Mit welchem Event muss ich es denn machen?
    Habs mit paar probiert,
    bei mouse/no button wechselt er schonmal das sprite wenn die maus auf den button kommt, aber nicht mehr zurück.

    Hab mal nen Screen gemacht wie es bei mir aussieht:


    Also Mutliplayer ist mein Standart Button,
    und dort hab ich dann paar events getestet,
    aber hat mit keinem so recht gefuntzt.

    Hab dort dann z.b. Mouse/no button gemacht als event und dort dann die action execute code
    und dort den code.

    Multiplayer_Fade ist dann mein veränderter Button der erscheint wenn man über dem Button ist.
  • Hatte in meinem Post eigtl. das Event dazugeschrieben, aber hauptsache es klappt.

    Und zur Erklärung, das ganze muss aus dem Grund ins Step Event, weil du ja ständig prüfen musst ob das der Fall ist, und nicht nur in bestimmten Fällen.
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Oder so...

    Bei wenigen Buttons ist auch dies möglich:

    Create

    GML-Quellcode

    1. //wenn nötig sprite_replace();
    2. button = 0;


    Step

    GML-Quellcode

    1. if (mouse_x > 50 && mouse_x < 250 && mouse_y > 5 && mouse_y < 45 && mouse_check_button(mb_left))
    2. {
    3. button=1;
    4. //room_goto_einstellungen
    5. }
    6. else
    7. {
    8. if (mouse_x > 50 && mouse_x < 250 && mouse_y > 55 && mouse_y < 95 && mouse_check_button(mb_left))
    9. {
    10. button=2;
    11. //room_goto_einstellungen
    12. }
    13. else
    14. {
    15. if (mouse_x > 50 && mouse_x < 250 && mouse_y > 105 && mouse_y < 145 && mouse_check_button(mb_left))
    16. {
    17. button=3;
    18. game_end();
    19. }
    20. else
    21. {
    22. button=0;
    23. }
    24. }
    25. }
    Alles anzeigen


    Draw

    GML-Quellcode

    1. draw_sprite(spr_button_start,1,50,5);
    2. draw_sprite(spr_button_einstellungen,1,50,55);
    3. draw_sprite(spr_button_beenden,1,50,105);
    4. if (button == 1)
    5. {
    6. draw_sprite(spr_button_start_,1,50,5);
    7. }
    8. if (button == 2)
    9. {
    10. draw_sprite(spr_button_einstellungen_,1,50,55);
    11. }
    12. if (button == 3)
    13. {
    14. draw_sprite(spr_button_beenden_,1,50,105);
    15. }
    Alles anzeigen



    Und das funktioniert einwandfrei (die Grössen der Grafiken musst du selbstverständlich für dein Projekt anpassen). :D

    Lg
    Michael