SDL2 - 未检测到操纵杆?
Posted
技术标签:
【中文标题】SDL2 - 未检测到操纵杆?【英文标题】:SDL2 - No Joysticks detected? 【发布时间】:2014-06-20 01:54:42 【问题描述】:所以,我正在尝试学习如何在 SDL2 中使用操纵杆,并且我正在关注 LazyFoo 的教程 (Gamepads and Joysticks),但我一定是做错了什么,因为我的程序无法检测到我的控制器!
Windows 检测到它(我使用的是 Windos 7 和无线 Xbox 360 控制器)并且 LazyFoo 的示例(我从上面的链接下载的)也检测到了我的控制器!
我搜索并尝试了一些东西,但我尝试的任何东西似乎都不起作用......
这是我的初始化:
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
cout << "Error initializing SDL!" << endl;
return 1;
这部分在我的 Input 类的构造函数中,它应该“启动”操纵杆(并且还检测来自键盘的事件):
if (SDL_NumJoysticks() < 1)
cout << "No joystick detected." << endl;
else
controller = SDL_JoystickOpen(0);
if (controller == NULL)
cout << "Error: Unable to open Joystick." << endl;
else
isUsingJoystick = true;
我也尝试在 Init 和 SDL_JoystickUpdate()
之后使用 SDL_JoystickEventState(SDL_ENABLE)
,但也没有用...
我忘记了什么?
如果你们愿意,我可以用我的 Input 类的代码编辑帖子...
编辑:我忘了说,即使我的控制器已连接并且一切正常,SDL_NumJoysticks()
返回 0...
【问题讨论】:
代码的第二部分是否有效?,您是否正确阅读了事件? @this 我不这么认为...我可以从键盘读取事件,但不能从操纵杆读取。另外,正如我在帖子中编辑的那样,SDL_NumJoysticks()
返回 0,所以就像没有插入控制器一样......
请不要在标题中添加“[已解决]”。表明问题已解决的方法是接受答案。 (强调自己的答案是完全可以接受的。)
【参考方案1】:
我发现我做错了什么。事实证明,我试图在初始化 SDL 之前打开我的操纵杆(我在 Input
类的构造函数中打开了我的操纵杆,但我在 SDL_INIT_EVERYTHING
之前创建了我的 Input
类的唯一实例.)
我认为仅凭我写的信息是不可能发现这一点的,很抱歉打扰。
【讨论】:
以上是关于SDL2 - 未检测到操纵杆?的主要内容,如果未能解决你的问题,请参考以下文章