事件仅在单击按钮时检查

event check only when clicked on a button

本文关键字:检查 按钮 单击 事件      更新时间:2023-10-16

我有一个简单的测试脚本,当用户在按钮的尺寸内单击但行不通时,它的意思是更改布尔值。

我像这样接近它:

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,即使在按钮上时未按下按钮,即使未按下按钮。

我很困惑如何使它正常工作。

尝试在鼠标按钮上处理您的"单击"事件。我从未使用过SDL,但我怀疑有一个SDL_MOUSEBUTTONUP定义。否则,您不知道他们是否要执行拖动操作,或者他们是否要在放开鼠标按钮之前将鼠标移动到其他地方。