EasyButton v4 by derkimba
Dieses Script richtet sich an GML-Anfänger
Mit diesem Script könnt ihr ganz einfach einen Button zeichnen (auch mit einem sprite oder purem Text) und auslesen, ob der Button gedrückt worden ist.
Vorteil: Ihr könnt mit einem Objekt so viele Buttons erstellen, wie ihr wollt und spart euch einige Zeilen Code.
Erklärung zu draw_button_sprite:
Das Script muss in einem Draw Event verwendet werden!
Mit diesem Script könnt ihr ein Sprite zeichnen, das wie ein Button fungiert.
- Argument0 ist die x-Position, an der euer Button gezeichnet werden soll.
- Argument1 ist die y-Position eures Buttons.
- Argument2 ist das Sprite, das den Button darstellen soll.
- Argument3 ist das SubImage, welches gezeichnet werden soll, wenn die Maus sich nicht über dem Button befindet. Hier kann auch image_index angegeben werden.
- Argument4 ist das SubImage, welches gezeichnet werden soll, wenn sich die Maus über dem Button befindet. Ebenfalls kann hier image_index geschrieben werden.
- Argument5 ist der Mausbutton der gedrückt werden soll (mb_left oder mb_right).
- Argument6 ist die Art der Überprüfung
(0 = Wenn der Button gedrückt wird ; 1 = Wenn der Button losgelassen wird ; 2 = Während der Button gedrückt wird)
Das Script liefert "true" zurück, wenn der Button gedrückt wird, ansonsten wird "false" zurückgegeben.
draw_button_sprite
GML-Quellcode
- // By derkimba
- //draw_button_sprite(x1,y1,spr,ii_0,ii_1,mb,typ) liefert true zurück wenn er gedrückt wird, sonst false
- var x1,y1,spr,ii_0,ii_1;
- x1 = argument0 // x position
- y1 = argument1 // y position
- spr = argument2 // sprite name
- ii_0 = argument3 // normaler image_index
- ii_1 = argument4 // image_index wenn maus über dem button ist
- mb = argument5 // Linke Maustaste: mb_left oder rechte Maustaste: mb_right
- typ = argument6 // 0 = pressed ; 1 = released ; 2 = gedrückt halten
- if(mouse_x > x1 && mouse_x < x1+sprite_get_width(spr) && mouse_y > y1 && mouse_y < y1+sprite_get_height(spr))
- {
- draw_sprite(spr,ii_1,x1,y1)
- switch(typ)
- {
- case 0:
- return(mouse_check_button_pressed(mb))
- case 1:
- return(mouse_check_button_released(mb))
- case 2:
- return(mouse_check_button(mb))
- }
- }
- else
- {
- draw_sprite(spr,ii_0,x1,y1)
- return false;
- }
Erklärung zu draw_button_button:
Das Script muss in einem Draw Event verwendet werden!
Mit diesem Script wird ein rechteckiger Button gezeichnet auf dem ihr einen beliebigen Text zeichnen könnt.
- Argument0 ist die x1-Position, an der euer Button gezeichnet werden soll.
- Argument1 ist die y1-Position eures Buttons.
- Argument2 ist die x2-Position
- Argument3 ist die y2-Position
- Argument4 ist der Mausbutton der gedrückt werden soll (mb_left oder mb_right).
- Argument5 ist die Art der Überprüfung
(0 = Wenn der Button gedrückt wird ; 1 = Wenn der Button losgelassen wird ; 2 = Während der Button gedrückt wird)- Argument6 ist der Text auf dem Button
- Argument7 ist die Farbe des Buttons
- Argument8 ist die Farbe des Textes
- Argument9 ist die Font des Textes (0 für die aktuelle Font)
Das Script liefert "true" zurück, wenn der Button gedrückt wird, ansonsten wird "false" zurückgegeben.
draw_button_button
GML-Quellcode
- // By derkimba
- //draw_button_button(x1,y1,x2,y2,mb,typ,text,col_b,col_t,font)
- var xx1,xx2,yy1,yy2,mb,typ,text,col_b,col_t,font;
- xx1 = argument0 // x1 Position
- yy1 = argument1 // y1 Position
- xx2 = argument2 // x2 Position
- yy2 = argument3 // y2 Position
- mb = argument4 // Mousebutton (mb_left oder mb_right)
- typ = argument5 // Art der Überprüfung(0 = Pressed ; 1 = Released ; 2 = Während)
- text = argument6 // Text auf dem Button
- col_b = argument7 // Farbe des Buttons
- col_t = argument8 // Farbe des Textes
- font = argument9 // Font des Textes (0 für das aktuelle Font)
- //
- if(font != 0) {draw_set_font(font)}
- if(mouse_x > xx1 && mouse_x < xx2 && mouse_y > yy1 && mouse_y < yy2)
- {
- draw_set_color(col_b)
- draw_button(xx1,yy1,xx2,yy2,0)
- draw_set_color(col_t)
- draw_text(xx1+((xx2-xx1-string_width(text))/2),yy1+((yy2-yy1-string_height(text))/2),text)
- switch(typ)
- {
- case 0:
- return(mouse_check_button_pressed(mb))
- case 1:
- return(mouse_check_button_released(mb))
- case 2:
- return(mouse_check_button(mb))
- }
- }
- else
- {
- draw_set_color(col_b)
- draw_button(xx1,yy1,xx2,yy2,1)
- draw_set_color(col_t)
- draw_text(xx1+((xx2-xx1-string_width(text))/2),yy1+((yy2-yy1-string_height(text))/2),text)
- return false;
- }
Erklärung zu draw_button_text:
Das Script muss in einem Draw Event verwendet werden!
Mit diesem Script könnt ihr einen Button erstellen in Form eines Textes.
- Argument0 ist die x-Position, an der euer Text gezeichnet werden soll.
- Argument1 ist die y-Position eures Textes.
- Argument2 ist der Mausbutton der gedrückt werden soll (mb_left oder mb_right)
- Argument3 ist die Art der Überprüfung
(0 = Wenn der Button gedrückt wird ; 1 = Wenn der Button losgelassen wird ; 2 = Während der Button gedrückt wird)- Argument4 ist der Text der gezeichnet werden soll
- Argument5 ist die Farbe des Textes, die er hat, wenn sich die Maus nicht darüber befindet
- Argument6 ist die Farbe des Textes, wenn sich die Maus darüber befindet
- Argument7 ist der Font der benutzt werden soll (0 für den aktuellen Font)
Das Script liefert "true" zurück, wenn der Button gedrückt wird, ansonsten wird "false" zurückgegeben.
draw_button_text
GML-Quellcode
- // By derkimba
- //draw_button_text(x,y,mb,typ,text,col_0,col_1,font)
- var xx,yy,mb,typ,text,col_0,col_1,font;
- xx = argument0 // x-Position des Textes
- yy = argument1 // y-Position des Textes
- mb = argument2 // Mausbutton der gedrückt werden soll (mb_left oder mb_right)
- typ = argument3 // Art der Überprüfung (0 = Pressed ; 1 = Released ; 2 = Während des drückens)
- text = argument4 // Der Text der gezeichnet werden soll
- col_0 = argument5 // Die Farbe des Textes wenn sich die Maus nicht darüber befindet
- col_1 = argument6 // Die Farbe des Textes wenn sich die Maus darüber befindet
- font = argument7 // Die Font des Textes (0 für die aktuelle Font)
- //
- if(font != 0) {draw_set_font(font)}
- if(mouse_x > xx && mouse_x < xx+string_width(text) && mouse_y > yy && mouse_y < yy+string_height(text))
- {
- draw_set_color(col_1)
- draw_text(xx,yy,text)
- switch(typ)
- {
- case 0: return(mouse_check_button_pressed(mb))
- case 1: return(mouse_check_button_released(mb))
- case 2: return(mouse_check_button(mb))
- }
- }
- else
- {
- draw_set_color(col_0)
- draw_text(xx,yy,text)
- return false;
- }
Zusätzlich gibt es zu jedem Script noch eine "typ" Variante, die als Argument keinen typ verlangt, sondern diesen zurückliefert:
Liefert zurück: 0 = Maus nicht über Button ; 1 = Maus über Button ; 2 = Maus drückt den Button ;
3 = Maus lässt den Button los ; 4 = Während die Maus den Button drückt
draw_button_sprite_typ
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21176/
- // EasyButton by derkimba
- //draw_button_sprite_typ(x1,y1,spr,ii_0,ii_1,mb) liefert den typ zurück
- var x1,y1,spr,ii_0,ii_1;
- x1 = argument0 // x position
- y1 = argument1 // y position
- spr = argument2 // sprite name
- ii_0 = argument3 // normaler image_index
- ii_1 = argument4 // image_index wenn maus über dem button ist
- mb = argument5 // Linke Maustaste: mb_left oder rechte Maustaste: mb_right
- // Liefert zurück: 0 = Maus nicht über Button ; 1 = Maus über Button ; 2 = Maus drückt den Button ;
- //3 = Maus lässt den Button los ; 4 = Während die Maus den Button drückt
- if(mouse_x > x1 && mouse_x < x1+sprite_get_width(spr) && mouse_y > y1 && mouse_y < y1+sprite_get_height(spr))
- {
- draw_sprite(spr,ii_1,x1,y1)
- if(mouse_check_button_pressed(mb)) {return 2}
- if(mouse_check_button(mb)) {return 4}
- if(mouse_check_button_released(mb)) {return 3}
- return 1;
- }
- else
- {
- draw_sprite(spr,ii_0,x1,y1)
- return 0;
- }
draw_button_button_typ
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21176/
- // EasyButton by derkimba
- //draw_button_button_typ(x1,y1,x2,y2,mb,text,col_b,col_t,font) liefert den Typ zurück
- var xx1,xx2,yy1,yy2,mb,text,col_b,col_t,font;
- xx1 = argument0 // x1 Position
- yy1 = argument1 // y1 Position
- xx2 = argument2 // x2 Position
- yy2 = argument3 // y2 Position
- mb = argument4 // Mousebutton (mb_left oder mb_right)
- text = argument5 // Text auf dem Button
- col_b = argument6 // Farbe des Buttons
- col_t = argument7 // Farbe des Textes
- font = argument8 // Font des Textes (0 für das aktuelle Font)
- // Liefert zurück: 0 = Maus nicht über Button ; 1 = Maus über Button ; 2 = Maus drückt den Button ;
- //3 = Maus lässt den Button los ; 4 = Während die Maus den Button drückt
- if(font != 0) {draw_set_font(font)}
- if(mouse_x > xx1 && mouse_x < xx2 && mouse_y > yy1 && mouse_y < yy2)
- {
- draw_set_color(col_b)
- draw_button(xx1,yy1,xx2,yy2,0)
- draw_set_color(col_t)
- draw_text(xx1+((xx2-xx1-string_width(text))/2),yy1+((yy2-yy1-string_height(text))/2),text)
- if(mouse_check_button_pressed(mb)) {return 2}
- if(mouse_check_button(mb)) {return 4}
- if(mouse_check_button_released(mb)) {return 3}
- return 1;
- }
- else
- {
- draw_set_color(col_b)
- draw_button(xx1,yy1,xx2,yy2,1)
- draw_set_color(col_t)
- draw_text(xx1+((xx2-xx1-string_width(text))/2),yy1+((yy2-yy1-string_height(text))/2),text)
- return 0;
- }
draw_button_text_typ
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21176/
- // EasyButton by derkimba
- //draw_button_text_typ(x,y,mb,text,col_0,col_1,font) liefert den typ zurück
- var xx,yy,mb,text,col_0,col_1,font;
- xx = argument0 // x-Position des Textes
- yy = argument1 // y-Position des Textes
- mb = argument2 // Mausbutton der gedrückt werden soll (mb_left oder mb_right)
- text = argument3 // Der Text der gezeichnet werden soll
- col_0 = argument4 // Die Farbe des Textes wenn sich die Maus nicht darüber befindet
- col_1 = argument5 // Die Farbe des Textes wenn sich die Maus darüber befindet
- font = argument6 // Die Font des Textes (0 für die aktuelle Font)
- // Liefert zurück: 0 = Maus nicht über Button ; 1 = Maus über Button ; 2 = Maus drückt den Button ;
- // 3 = Maus lässt den Button los ; 4 = Während die Maus den Button drückt
- if(font != 0) {draw_set_font(font)}
- if(mouse_x > xx && mouse_x < xx+string_width(text) && mouse_y > yy && mouse_y < yy+string_height(text))
- {
- draw_set_color(col_1)
- draw_text(xx,yy,text)
- if(mouse_check_button_pressed(mb)) {return 2}
- if(mouse_check_button(mb)) {return 4}
- if(mouse_check_button_released(mb)) {return 3}
- return 1;
- }
- else
- {
- draw_set_color(col_0)
- draw_text(xx,yy,text)
- return 0;
- }
Im Anhang befindet sich noch ein kleines Beispiel und die Scriptdatei
Ich hoffe, dass dieses Script besonders den Anfängern in GML etwas hilft. Falls noch Fragen oder Wünsche bestehen einfach posten.
Gruß, derkimba
Dieser Beitrag wurde bereits 38 mal editiert, zuletzt von derkimba () aus folgendem Grund: Rechtschreibfehler und optische Anpassungen sowie neue Scripts