2

SDL を使用してマウス イベントをポーリングする際に、少し奇妙な問題が発生しています。

        if(event.type == SDL_MOUSEBUTTONDOWN) {
            printf("click %d\n", event.button.button);
        }
        else if(event.type == SDL_MOUSEMOTION) {
            printf("move %d\n", event.button.button);


        }

マウスを動かしながらマウスの右ボタンをクリックしたままにすると、次のようになります。

click 3 // = SDL_BUTTON_RIGHT
move 4  // != SDL_BUTTON_RIGHT !
move 4
...

つまり、SDL_MOUSEBUTTONDOWNは、マウスの右ボタンのbutton.buttonを3に設定し、SDL_MOUSEMOTIONは4に設定しています。

なぜこれが起こっているのか誰にも分かりますか?

4

2 に答える 2

1

ではなく、event.motionforを使用することになっています。さらに、はビットマスクであり、 でクエリすることになっています。SDL_MOUSEMOTIONevent.buttonevent.motion.stateevent.motion.state & SDL_BUTTON(3)

于 2012-10-17T19:16:47.253 に答える
0

event.button.button は、モーションではなくクリック イベントに使用されます。このコードの目的がわかりません。

于 2012-10-17T19:16:53.297 に答える