Draw-Event triggern & Text skalieren

  • GM 7

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

  • Draw-Event triggern & Text skalieren

    Hallo zusammen! Ich bin gerade über dieses Forum gestolpert und habe folgende Frage:

    Ich habe für mein Projekt eine Landkarte erstellt, auf der pro dargestellter Stadt zwei Objekte existieren: Ein Sprite für die Stadt und ein "unsichtbares" Objekt, das per Draw-Event die Beschriftung zeichnet. Ich möchte nun, dass das folgende passiert:

    Wenn das Sprite der Stadt von der Maus berührt wird (Mouse-Enter), soll die Beschriftung etwa um den Faktor 4 skaliert und somit vergrößert werden. Wenn der Mauszeiger das Sprite verlässt, soll die Beschriftung dann wieder auf die normale Größe schrumpfen.

    Das klingt ja eigentlich recht einfach, aber ich fummele jetzt seit einer Stunde daran rum und komme keinen Schritt weiter. Für Tipps, Hinweise oder einen gepflegten Tritt in den Hintern (rein virtuell) würde ich mich freuen! 8o
  • Willkommen im Forum. :D

    Ist auch tatsächlich einfach:

    1. Du machst zwei Fonts, eine größere und die normale
    2. Du machst nur ein Objekt, das sowohl das Sprite und die beschriftung zeichnet, das ist auch gleich perfomancesparender.

    GML-Quellcode

    1. Draw-Event
    2. draw_sprite_ext(sprite,0,x,y,image_xscale,image_yscale,image_angle,c_white,1);
    3. draw_set_font(font);
    4. draw_text(x,y,"TEXT");


    3. Im Create-Event deklarierst du die Variable font:

    GML-Quellcode

    1. font = font_normal;


    4.Mouse Enter und Mouse Leave Event:

    GML-Quellcode

    1. //Mouse Enter
    2. font = font_big;

    GML-Quellcode

    1. //Mouse Leave
    2. font = font_normal;


    Das wars auch schon.
    Kann sein, dass ich einen kleinen Denkfehler drin hab, aber eig. sollte es funktionieren.

    Ps: Statt draw_sprite_ext reicht auch draw_sprite wenn du es nicht in Transparenz, Größe, Drehung und so ändern willst.
    Gruß Gamer
  • Erst einmal kannst du die zwei Objekte zusammenfassen:

    GML-Quellcode

    1. draw_sprite(sprite_index,-1,x,y); // Zeichnet das Sprite des Objekts.
    2. draw_set_halign(fa_center);
    3. draw_set_valign(fa_bottom);
    4. draw_text(x,y-32,"Text");

    Ich nehme mal an, du hast keinen Pro-GM, deshalb brauchst du 2 Fonts. Dann würde das Ganze mit dem Skalieren so funktionieren:

    GML-Quellcode

    1. var over; // Variable over nur für diesen Skript verfügbar.
    2. // Speichert in der Variable, ob die Maus überdem Objekt/aktuellen Sprite ist:
    3. over = position_meeting(mouse_x,mouse_y,self);
    4. draw_sprite(sprite_index,-1,x,y); // Zeichnet das Sprite des Objekts.
    5. draw_set_halign(fa_center);
    6. draw_set_valign(fa_bottom);
    7. if (over) { draw_set_font(fnt_big); } // Wenn drüber, große Schriftart
    8. else { draw_set_font(fnt_small); } // ansonsten die kleine
    9. draw_text(x,y-32,"Text");

    Zusätzlich: Zu spät, ich hoffe es hilft trotzdem :D

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

  • Vielen Dank an Euch beide!

    PS: Ich hab die Pro-Version.

    PPS: Leider funktioniert jetzt das schöne einfärben des Sprites beim MouseOver leider nicht mehr.... irgendwie hab ich heute ein Brett vor dem Kopp....

    PPPs: So, der Einfachheit halber kommt hier mein Quelltext:

    Sprite: StadtNormal
    Solid: false
    Visible: true
    Depth: 7
    Persistent: false
    Parent:
    Mask:

    GML-Quellcode

    1. Create Event:font = font_normal;


    GML-Quellcode

    1. Mouse Event for Mouse Enter:font = font_big;
    2. sprite_index=StadtHighlight;


    GML-Quellcode

    1. Mouse Event for Mouse Leave:font = font_normal;
    2. sprite_index=StadtNormal;


    GML-Quellcode

    1. Draw Event:draw_sprite(StadtNormal,1,600,500);
    2. draw_set_font(font);draw_set_halign(fa_center);draw_set_valign(fa_bottom);draw_text(920,460,"Stadt");


    Warum wechselt er mein Sprite nicht gegen die Highlight-Version aus?!?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von lando-KO ()