2016-07-15 2 views
1

これは、DRAW GUIの下にあるマイボタンです。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"); 

かなり単純です。それは矩形とそれにテキスト「新しいゲーム」を描画します。 マウスの上にマウスを置くと、マウスが点灯します。クリックするとグラフィックが変わります。それは良いボタンです。

マウスボタンを押しながらボタンの領域を入力すると問題が発生します。

enter image description here

は、それがどのように動作するかを参照してください?点灯する代わりに、それが押される。

私が入ってくるので、私はマウスのボタンを持っているので、すべてこれを避けるために、代わりにそれを点灯させる方法は?

答えて

2

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); 
+0

ありがとうございました!それはそれを修正した。 :) –

+0

ねえ、私は質問があります。上のコードは完全に動作します。私が気付いたことは、ボタンを放して、アクションが起こったときに、ボタンが押されたグラフィックを持っていることだけです。スプライトがクリック後に正常に戻った後にのみアクションが発生する可能性はありますか? –

+0

アクションの前に 'button_pressed = false;'を追加してください。それが助けにならない場合は、 'button_pressed = false;に変更してください。 alarm [0] = 1; 'の中にあり、' alarm 1 'の中にアクションコードが入ります。 – Dmi7ry

関連する問題