EasyBox v2 by derkimba
Dieses Script richtet sich an GML-Anfänger
Mit diesem Script könnt ihr ganz einfach Checkboxen erstellen und diese Abfragen.
Vorteil: Ihr könnt mit einem einzigen Objekt so viele Checkboxen erstellen wie ihr wollt und ihr könnt von anderen Objekten aus trotzdem auf die Checkbox zugreifen und sie von überall aus abfragen oder ändern.
Erklärung zu draw_checkbox_sprite:
Mit diesem Script könnt ihr mit euren eigenen Sprites Checkboxen machen.
Wichtig hierbei ist, dass euer Checkbox Sprite 4 SubImages hat:
- Das erste ist die Checkbox wenn sie deaktiviert ist und sich die Maus nicht darüber befindet
- Das zweite ist die Checkbox, wenn sie aktiviert ist und die Maus nicht darüber ist.
- Das dritte ist die Checkbox, wenn sie nicht aktiviert ist, aber die Maus darüber ist.
- Das vierte ist die Checkbox, wenn sie aktiviert ist und die Maus darüber ist.
Folgende Argumente müssen mit übergeben werden:
- Argument0 ist die x-Position eurer Checkbox
- Argument1 ist die y-Position eurer Checkbox
- Argument2 ist das Sprite eurer Checkbox (dieses muss wie oben geschrieben aufgebaut sein)
- Argument3 ist der Mausbutton der überprüft werden soll (mb_left oder mb_right)
- Argument4 ist der Index eurer Checkbox. Dies muss als String angegeben werden. Mithilfe dieses Indexes könnt ihr auf die Checkbox zugreifen, er funktioniert wie eine lokale Variable und enthält den Wert 0 = Checkbox deaktiviert oder 1 = Checkbox ist aktiviert. Jede Checkbox braucht einen anderen Index, haben sie den selben, ahmen sie sich gegenseitig nach.
Die Funktion liefert den image_index zurück, also 0 bei deaktiviert und Maus nicht darüber, 1 bei aktiviert und Maus nicht darüber, 2 bei deaktiviert und Maus darüber, 3 bei aktiviert und Maus darüber. Wenn du nur überprüfen willst ob die Checkbox aktiviert ist oder nicht, kannst du den Index abfragen (siehe Example)
draw_checkbox_sprite
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21187/
- // By derkimba
- //draw_checkbox_sprite(x,y,spr,mb,index)
- var xx,yy,spr,status,index;
- xx = argument0 // x-Position der Checkbox
- yy = argument1 // y-Position der Checkbox
- spr = argument2 // Sprite der Checkbox
- mb = argument3 // Mausbutton der abgefragt werden soll (mb_left oder mb_right)
- index = argument4 // Der Index der Checkbox (muss ein String sein)
- // Mit dem Index kannst du jederzeit auf den Wert der Checkbox zugreifen (0 = deaktiviert , 1 = aktiviert)
- // Jede Checkbox braucht einen anderen Index, wenn 2 Checkboxen den selben Index haben,
- // ahmen sie sich gegenseitig nach, dies kann natürlich auch von Vorteil sein.
- if(!variable_local_exists(index)) {variable_local_set(index,0)}
- //
- if(mouse_x > xx && mouse_x < xx+sprite_get_width(spr) && mouse_y > yy && mouse_y < yy+sprite_get_height(spr))
- {
- if(variable_local_get(index) == 0)
- {
- status = 2
- draw_sprite(spr,status,xx,yy)
- }
- if(variable_local_get(index) == 1)
- {
- status = 3
- draw_sprite(spr,status,xx,yy)
- }
- if(mouse_check_button_pressed(mb))
- {
- if(variable_local_get(index) == 1) {variable_local_set(index,0)}
- else if(variable_local_get(index) == 0) {variable_local_set(index,1)}
- }
- }
- else
- {
- draw_sprite(spr,variable_local_get(index),xx,yy)
- status = variable_local_get(index)
- }
- return status;
Erklärung zu draw_checkbox_checkbox
Mit diesem Script könnt ihr ohne ein Sprite zu erstellen eine simple Checkbox zeichnen und ihren Status abfragen
Folgende Argumente müssen dabei angegeben werden:
- Argument0 ist der x1-Wert
- Argument1 ist der y1-Wert
- Argument2 ist der x2-Wert
- Argument3 ist der y2-Wert
- Argument4 ist der Mousebutton der überprüft werden soll (mb_left oder mb_right)
- Argument5 ist die Breite des Kreuzes
- Argument6 ist die Farbe des Rahmens der Box wenn Maus nicht darüber ist
- Argument7 ist die Farbe des Rahmens der Box wenn die Maus darüber ist
- Argument8 ist die Farbe des Kreuzes wenn die Checkbox aktiviert ist und die Maus nicht über der Box ist
- Argument9 ist die Farbe des Kreuzes bei aktivierter Box und wenn die Maus über der Box ist
- Argument10 ist die Hintergrundfarbe der Checkbox
- Argument11 ist der Index eurer Checkbox. Dies muss als String angegeben werden. Mithilfe dieses Indexes könnt ihr auf die Checkbox zugreifen, er funktioniert wie eine lokale Variable und enthält den Wert 0 = Checkbox deaktiviert oder 1 = Checkbox ist aktiviert. Jede Checkbox braucht einen anderen Index, haben sie den selben, ahmen sie sich gegenseitig nach.
Die Funktion liefert den image_index zurück, also 0 bei deaktiviert und Maus nicht darüber, 1 bei aktiviert und Maus nicht darüber, 2 bei deaktiviert und Maus darüber, 3 bei aktiviert und Maus darüber. Wenn du nur überprüfen willst ob die Checkbox aktiviert ist oder nicht, kannst du den Index abfragen (siehe Example)
draw_checkbox_checkbox
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21187/
- // By derkimba
- //draw_checkbox_checkbox(x1,y1,x2,y2,mb,width,col_0,col_1,col_x_0,col_x_1,col_b,index)
- var xx1,xx2,yy1,yy2,mb,width,col_0,col_1,col_x_0,col_x_1,status,index;
- xx1 = argument0 // x1-Position der Checkbox
- yy1 = argument1 // y1-Position der Checkbox
- xx2 = argument2 // x2-Position der Checkbox
- yy2 = argument3 // y2-Position der Checkbox
- mb = argument4 // Mausbutton der abgefragt werden soll (mb_left oder mb_right)
- width = argument5
- col_0 = argument6 // Farbe des Rahmens der Box wenn Maus nicht darüber ist
- col_1 = argument7 // Farbe des Rahmens der Box wenn die Maus darüber ist
- col_x_0 = argument8 // Farbe des Kreuzes wenn die Checkbox aktiviert ist und die Maus nicht über der Box ist
- col_x_1 = argument9 // Farbe des Kreuzes bei aktivierter Box und wenn die Maus über der Box ist
- col_b = argument10 // Hintergrundfarbe der Checkbox
- index = argument11 // Der Index der Checkbox (muss ein String sein)
- // Mit dem Index kannst du jederzeit auf den Wert der Checkbox zugreifen (0 = deaktiviert , 1 = aktiviert)
- // Jede Checkbox braucht einen anderen Index, wenn 2 Checkboxen den selben Index haben,
- // ahmen sie sich gegenseitig nach, dies kann natürlich auch von Vorteil sein.
- if(!variable_local_exists(index)) {variable_local_set(index,0)}
- //
- draw_rectangle_color(xx1,yy1,xx2,yy2,col_b,col_b,col_b,col_b,0)
- if(mouse_x > xx1 && mouse_x < xx2 && mouse_y > yy1 && mouse_y < yy2)
- {
- if(variable_local_get(index) == 0)
- {
- status = 2
- draw_rectangle_color(xx1,yy1,xx2,yy2,col_1,col_1,col_1,col_1,1)
- }
- if(variable_local_get(index) == 1)
- {
- status = 3
- draw_rectangle_color(xx1,yy1,xx2,yy2,col_1,col_1,col_1,col_1,1)
- draw_line_width_color(xx1,yy1,xx2,yy2,width,col_x_1,col_x_1)
- draw_line_width_color(xx1,yy2,xx2,yy1,width,col_x_1,col_x_1)
- }
- if(mouse_check_button_pressed(mb))
- {
- if(variable_local_get(index) == 1) {variable_local_set(index,0)}
- else if(variable_local_get(index) == 0) {variable_local_set(index,1)}
- }
- }
- else
- {
- draw_rectangle_color(xx1,yy1,xx2,yy2,col_0,col_0,col_0,col_0,1)
- if(variable_local_get(index) == 1)
- {
- draw_line_width_color(xx1,yy1,xx2,yy2,width,col_x_0,col_x_0)
- draw_line_width_color(xx1,yy2,xx2,yy1,width,col_x_0,col_x_0)
- }
- status = variable_local_get(index)
- }
- return status;
Ich hoffe, dass dieses Script einigen von euch helfen wird
Würde mich freuen, wenn ihr mich in den Credits erwähnt, wenn ihr das Script benutzt.
Hier noch ein kleines Beispiel um den Index zu erklären:
GML-Quellcode
- status = draw_checkbox_checkbox(100,390,130,420,mb_left,3,c_black,c_gray,c_green,c_gray,"superbox"))
- // Die Variable status enthält nun den Wert 0,1,2 oder 3 (siehe Erklärung)
- draw_text(200,390,string(superbox))
- // Wir können hier den Index (der wie eine Variable existiert) ebenfalls abfragen und anzeigen. Er enthält den Wert 0 oder 1 (siehe Erklärung)
- // Dadurch können wir auch aus anderen Objekten auf unsere Checkbox zugreifen:
- // obj_checkbox.superbox = 1 kann beispielsweise unsere Checkbox aktivieren, ohne das wir mit der Maus auf die Checkbox klicken ;)
Im Anhang befindet sich ein kleines Beispiel, sowie die Scriptdatei
Gruß, derkimba
Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von derkimba ()