проверка события только при нажатии на кнопку

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

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

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");
 }

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

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


person Sir    schedule 06.11.2012    source источник


Ответы (1)


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

person AJG85    schedule 06.11.2012
comment
Могу ли я поместить это в оператор IsIn if? - person Sir; 06.11.2012