【问题标题】:Correct way to generate an SDLK_LEFT SDL_Event?生成 SDLK_LEFT SDL_Event 的正确方法?
【发布时间】:2012-01-09 19:31:59
【问题描述】:

我想生成一个 SDL_Event,但它似乎不起作用。这是我要生成的代码:

Uint8* keys; 

SDL_Event ev;
ev.type = SDL_KEYDOWN;
ev.key.state = SDL_PRESSED;
ev.key.keysym.sym = SDLK_LEFT;

SDL_PushEvent(&ev); 
keys = SDL_GetKeyState(NULL);

稍后我会检查它是否存在:

if(keys)
{
    if(keys[SDLK_LEFT])
    {
        //Do something
    }
…

为什么它不起作用?我需要初始化其他东西吗?或者它有更简单的方法来生成[SDLK_LEFT] Keyboard event?我也试过keys[SDLK_LEFT] = true;,但没有成功。

【问题讨论】:

    标签: macos events keyboard sdl


    【解决方案1】:

    在再次调用SDL_GetKeyState() 之前尝试SDL_PumpEvents()

    【讨论】:

      【解决方案2】:

      我现在用下面的代码让它工作了:

      keys = SDL_GetKeyState(NULL);
      keys[SDLK_LEFT] = TRUE;
      

      读完键后,我将它们设置回FALSE

      【讨论】:

        【解决方案3】:

        试试这个:

        Uint8 *key = SDL_GetKeyState(NULL);
            if (key[SDLK_a])
                {
                //Do something;
                }
            if (key[SDLK_d])
                {
                //Do something;
                }
        

        【讨论】:

          猜你喜欢
          • 2021-05-30
          • 2021-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-02
          相关资源
          最近更新 更多