【发布时间】:2014-06-13 06:38:48
【问题描述】:
我正在尝试使用 SDL 2 为游戏制作控制器(不想在 gamedev 上询问,因为这不是直接的游戏问题)我使用 SDL_GetKeyboardEvent 来查看是否按下了导航箭头,但显然没有'不起作用,如果按下其中一个键,它应该打印值 1 或 -1,但即使我按住键几秒钟,它也不会只打印 0,就像它没有检测到键被按下。我在整个互联网上搜索,他们就是这样做的,但它对我不起作用。
#define SDL_MAIN_HANDLED
#include <stdio.h>
#include "SDL.h"
/* I'll add some code later
so something that isn't used
might be initialized
*/
int main (void)
{
int a = 1;
int x;
int z;
SDL_Event quit;
const Uint8 *keys = SDL_GetKeyboardState(NULL);
SDL_Init(SDL_INIT_VIDEO);
while(a)
{
SDL_PollEvent(&quit);
if(quit.type == SDL_QUIT)
a = 0;
if(keys[SDL_SCANCODE_UP])
z = 1;
else if(keys[SDL_SCANCODE_DOWN])
z = -1;
else
z = 0;
if(keys[SDL_SCANCODE_LEFT])
x = -1;
else if(keys[SDL_SCANCODE_RIGHT])
x = 1;
else
x = 0;
printf("%d, %d\n", x, z);
//This is supposed to print
//x, z values so if up arrow is pressed it will print 0, 1 and if
//down arrow is pressed it will print 0, -1: the same with horizontal ones.
//1 or -1, 1 or -1
}
SDL_Quit();
return 0;
}
【问题讨论】:
-
这不是重复的,这个问题使用了完全不同的方法和 SDL 1.x,而我使用的是 SDL 2,所以很多事情完全不同。