【发布时间】: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,所以就像没有插入控制器一样...... -
请不要在标题中添加“[已解决]”。表明问题已解决的方法是接受答案。 (强调自己的答案是完全可以接受的。)