假设我们有一个控制器输入设备。另外,假设我们还有一些使用“SDL_PollEvent(...)”检查事件的构造。
在我的测试中,每3秒检查一次“SDL_PollEvent(...)”,如果在延迟期间快速点击一次按钮或甚至多次点击,SDL将不会生成按钮按下或按钮释放事件。如果现在按下并按下控制器上轻触的按钮,则SDL剂量会产生这些事件。
除了同样的测试之外,如果在非常极端的“SDL_Delay(...)”测试期间只快速点击一次键盘键,则始终会生成按下按钮的事件。
从控制器设备按下并释放快速按钮将生成带有“SDL_WaitEvent(...)”的事件。但是,SDL_INIT_VIDEO和SDL_INIT_EVENTTHREAD必须在同一个线程中,因为在我的情况下它们不能在多个SDL_Thread [s]之间分开。
鉴于事件轮询与按下按钮的时间之间的延迟,我的情况需要知道该按钮至少被按下了一次。
在这种情况下可以做些什么?那么SDL会以与键盘设备相同的方式生成/轮询控制器事件吗?
SDL 1.2无法做到这一点吗?是否有其他库能够更好地保证生成按钮点击事件?谢谢!
bool activity(1);
while(activity) // event polling used in testing
{
std::cout << "\nWaiting...";
SDL_Delay(3000U); // <--- simulating delay for purpose of test
while(SDL_PollEvent(&event_))
{
switch(event_.type)
{
case SDL_JOYBUTTONDOWN :
switch(event_.jbutton.button)
{
case 0U :
...
break;
case 1U :
...
break;
}
break;
case SDL_KEYDOWN :
switch(event_.key.keysym.sym)
{
case SDLK_a :
...
break;
}
break;
}
}
}