在 GameMaker 中使用 DRAW GUI 的简单按钮
Simple Button using DRAW GUI in GameMaker
这是我在 DRAW GUI 下的按钮。
if point_in_rectangle(window_mouse_get_x(),window_mouse_get_y(),790,317,943,385)
{ var hover=1; } else { var hover=0; }
draw_sprite(spr_mainmenu_smallbutton,hover,865,360);
if (distance_to_point(mouse_x,mouse_y)<=0)
{
if mouse_check_button(mb_left)
draw_sprite(spr_mainmenu_smallbutton,2,865,360);
}
draw_set_color(make_colour_rgb(163,190,240));
draw_set_font(fnt_mainmenu_text);
draw_text(865,350,"New Game");
相当简单。它绘制了一个矩形和上面的文本 "New Game"。
当鼠标悬停在它上面时,它会亮起。单击它时,图形会发生变化。这是一个很好的按钮。
当我在按住鼠标按钮的同时进入按钮区域时出现问题。
看看它的表现如何?它没有点亮,而是被按下。
都是因为我在进入时按住了鼠标按钮。有什么办法可以避免这种情况并让它亮起来?
您需要使用 mouse_check_button_pressed()
而不是 mouse_check_button()
。
像这样:
Create
事件:
button_pressed = false;
mouse_over = false;
button_x = 865;
button_y = 350;
button_width = 153;
button_height = 68;
button_left = button_x - button_width div 2;
button_right = button_left + button_width - 1;
button_top = button_y - button_height div 2;
button_bottom = button_top + button_height - 1;
Step end
事件:
mouse_over = point_in_rectangle(device_mouse_x_to_gui(0), device_mouse_y_to_gui(0), button_left, button_top, button_right, button_bottom);
if !mouse_over
button_pressed = false;
else
{
if mouse_check_button_pressed(mb_left)
{
button_pressed = true;
}
else if mouse_check_button_released(mb_left) and button_pressed
{
// action
show_message("pressed");
}
}
Draw GUI
事件:
if button_pressed
draw_sprite(sprite_index, 0, button_x, button_y);
else if mouse_over
draw_sprite(sprite_index, 1, button_x, button_y);
else
draw_sprite(sprite_index, 2, button_x, button_y);
这是我在 DRAW GUI 下的按钮。
if point_in_rectangle(window_mouse_get_x(),window_mouse_get_y(),790,317,943,385)
{ var hover=1; } else { var hover=0; }
draw_sprite(spr_mainmenu_smallbutton,hover,865,360);
if (distance_to_point(mouse_x,mouse_y)<=0)
{
if mouse_check_button(mb_left)
draw_sprite(spr_mainmenu_smallbutton,2,865,360);
}
draw_set_color(make_colour_rgb(163,190,240));
draw_set_font(fnt_mainmenu_text);
draw_text(865,350,"New Game");
相当简单。它绘制了一个矩形和上面的文本 "New Game"。 当鼠标悬停在它上面时,它会亮起。单击它时,图形会发生变化。这是一个很好的按钮。
当我在按住鼠标按钮的同时进入按钮区域时出现问题。
看看它的表现如何?它没有点亮,而是被按下。
都是因为我在进入时按住了鼠标按钮。有什么办法可以避免这种情况并让它亮起来?
您需要使用 mouse_check_button_pressed()
而不是 mouse_check_button()
。
像这样:
Create
事件:
button_pressed = false;
mouse_over = false;
button_x = 865;
button_y = 350;
button_width = 153;
button_height = 68;
button_left = button_x - button_width div 2;
button_right = button_left + button_width - 1;
button_top = button_y - button_height div 2;
button_bottom = button_top + button_height - 1;
Step end
事件:
mouse_over = point_in_rectangle(device_mouse_x_to_gui(0), device_mouse_y_to_gui(0), button_left, button_top, button_right, button_bottom);
if !mouse_over
button_pressed = false;
else
{
if mouse_check_button_pressed(mb_left)
{
button_pressed = true;
}
else if mouse_check_button_released(mb_left) and button_pressed
{
// action
show_message("pressed");
}
}
Draw GUI
事件:
if button_pressed
draw_sprite(sprite_index, 0, button_x, button_y);
else if mouse_over
draw_sprite(sprite_index, 1, button_x, button_y);
else
draw_sprite(sprite_index, 2, button_x, button_y);