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

問題は、どこかをクリックしてからクリックがtrueに等しい場合、マウスがover終了ボタンである場合、ボタンの上にあるときにボタンが押されていなくても終了することです。

どうすれば正しく動作させることができるのか混乱しています。

4

1 に答える 1

1

代わりに、マウスボタンを上にして「クリック」イベントを処理してみてください。私はSDLを使用したことがありませんが、SDL_MOUSEBUTTONUP定義されていると思います。そうしないと、ドラッグ操作を実行するのか、マウスボタンを離す前にマウスを別の場所に移動するのかがわかりません。

于 2012-11-06T03:52:22.430 に答える