SDL鼠标按钮不一致

时间:2012-10-17 19:11:06

标签: c++ button mouse mouseevent sdl

我在使用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。

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

您应该SDL_MOUSEMOTION使用event.button,而不是event.motion.state。此外,event.motion.state & SDL_BUTTON(3)是位掩码,您应该使用{{1}}进行查询。

答案 1 :(得分:0)

event.button.button用于click事件而非for motion,我不明白这段代码的用途?