2012-11-06 4 views
0

У меня есть простой тестовый скрипт, который предназначен для изменения логического значения, когда пользователь нажимает на размеры кнопки, но не работает.проверка события только при нажатии на кнопку

Я подошел к нему так:

while(SDL_PollEvent(&event)) { 
     switch(event.type){ 
      case SDL_QUIT: quit = true; break; 
      case SDL_MOUSEMOTION: mouseX = event.motion.x; mouseY = event.motion.y; break;  
      case SDL_MOUSEBUTTONDOWN: click = true; 
     } 
} 
Button btn_settings(btn_x,btn_y); 
if(btn_settings.IsIn(mouseX,mouseY)){ 
    btn_settings.RenderImg(menu,screen,"button_on.png","Settings"); 

    if(click){ 
     quit = true; 
    } 

} else { 
    btn_settings.RenderImg(menu,screen,"button.png","Settings"); 
} 

Проблема заключается в том, если я нажимаю в любом месте, то нажмите равно верно, то если мышь over кнопку выхода он выходит, даже если кнопка не была нажата, когда над кнопкой.

Я смущен, как я могу заставить его работать правильно.

ответ

1

Попробуйте вместо этого использовать кнопку «click» на кнопке мыши. Я никогда не использовал SDL, но я подозреваю, что существует SDL_MOUSEBUTTONUP. В противном случае вы не знаете, хотите ли они выполнить операцию перетаскивания или если они перемещают мышь где-то еще, прежде чем отпускать кнопку мыши.

+0

Я бы разместил это внутри инструкции «IsIn» if? – Sir

Смежные вопросы