У меня возникла любопытная маленькая проблема опроса событий мыши с использованием 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.The на 3 для правой кнопки мыши, в то время как SDL_MOUSEMOTION устанавливает ее на 4.
Кто-нибудь знает, почему это может происходить?
Вы должны использовать event.motion
за SDL_MOUSEMOTION
не event.button
, Более того, event.motion.state
битовая маска, вы должны запросить его с event.motion.state & SDL_BUTTON(3)
,
event.button.button используется для события click, а не для движения. Я не понимаю назначение этого кода?