我在使用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。
有谁知道为什么会这样?
答案 0 :(得分:1)
您应该SDL_MOUSEMOTION
使用event.button
,而不是event.motion.state
。此外,event.motion.state & SDL_BUTTON(3)
是位掩码,您应该使用{{1}}进行查询。
答案 1 :(得分:0)
event.button.button用于click事件而非for motion,我不明白这段代码的用途?