设备:Macbook,OS X,多点触控,SDL2。
float posX = event.tfinger.x;
float posY = event.tfinger.y;
if ( event.type == SDL_FINGERDOWN ) std::cout << "posX = " << posX << ", posY = " << posY << "\n";
它返回我的多点触控设备的坐标。如果我在左上角点击我的多点触控,它会返回类似于0.1x0.1的坐标。好的,对。但是如何在OS X中获取光标位置的坐标?
我只能获得多点触控设备的坐标,但并不意味着它是屏幕上光标的坐标。我的意思是......我可以在左上角点击我的多点触控,但此时我的光标将位于屏幕的右下角。
答案 0 :(得分:0)
如果我理解正确,您希望同时获得触摸设备的位置以及屏幕上光标的位置?
我建议使用SDL_MOUSEMOTION事件:
while (SDL_PollEvent(&e))
{
switch(e->type) {
case SDL_MOUSEMOTION:
mouseX = e.button.x;
mouseY = e.button.y;
break;
}
}
其中“mouseX”和“mouseY”变量将是SDL_Window 中屏幕上光标的坐标。
如果您想要全局鼠标坐标,可以使用SDL_GetGlobalMouseState:
int mouseX;
int mouseY;
SDL_GetGlobalMouseState(&mouseX, &mouseY);
它将为您提供全局(相对于桌面)坐标。
目前SDL_GetMouseState存在一个错误,如果您使用SDL_SetWindowFullscreen并将其设置为无边框全屏(SDL_WINDOW_FULLSCREEN_DESKTOP),则会得到错误的坐标,这就是我建议使用SDL_MOUSEMOTION事件的原因。
可以在任何其他实例中使用(据我所知)。