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_MOUSEMOTION,而不是event.button。此外,event.motion.state是一个位掩码,您应该使用event.motion.state & SDL_BUTTON(3).

于 2012-10-17T19:16:47.253 回答
0

event.button.button 用于单击事件而不是运动,我不明白这段代码的目的?

于 2012-10-17T19:16:53.297 回答