我的应用程序无法理解SDL_KEYDOWN

时间:2014-04-07 07:16:38

标签: c++ sdl-2

我在应用程序内部编写了一些基本导航,但之后它没有用,所以我减少了 他们到这个

void CSystem::controls()
{
switch (mainEvent->type)
{
case SDL_KEYDOWN:
    switch (mainEvent->key.keysym.sym)
    {
    case SDLK_a:
        cout << "JKANAJIDJAIJIHVUIRBYVHRU" << endl;
        break;
    }
    break;

case SDL_KEYUP:
    switch (mainEvent->key.keysym.sym)
    {
    case SDLK_a:
        cout << "removed A" << endl;
        break;
    }
    break;
}
}

我看到了这个问题,但我想不出任何其他解决方法,它读取我的KeyUp事件,但它不会读取我的KeyDown事件,我试图复制此代码并将其粘贴到我的游戏中,它有效。

我的大脑问题是什么问题,我检查了mainEvent,这只是通常的

SDL_Event* mainEvent = new SDL_CreateEvent();

我无法感觉到它有什么问题......这是一个错误还是什么?我一直试图因为这个小小的挫折而抓挠整个应用程序。

1 个答案:

答案 0 :(得分:3)

您需要使用SDL_PollEvent(mainEvent)。告诉我它是否有效:)

void CSystem::controls()
{
    while (SDL_PollEvent(mainEvent))
    {
    switch (mainEvent->type)
    {
    case SDL_KEYDOWN:
        switch (mainEvent->key.keysym.sym)
        {
        case SDLK_a:
            cout << "JKANAJIDJAIJIHVUIRBYVHRU" << endl;
            break;
        }
        break;

    case SDL_KEYUP:
        switch (mainEvent->key.keysym.sym)
        {
        case SDLK_a:
            cout << "removed A" << endl;
            break;
        }
        break;
    }
    }
}