SDL2_pollevent () Контроллер dpad непрерывного удержания? - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь зарегистрировать нажатия кнопок контроллера / dpad и непрерывное удержание указанных кнопок таким образом, чтобы он непрерывно выплевывал вывод вместо одного нажатия за раз и затем выходил из цикла событий опроса.Прямо сейчас у меня есть небольшой кусок фиктивного кода, который я пытаюсь напечатать в потоке, если я удерживаю кнопку нажатой.Любая помощь в этом вопросе?

while( !quit_program )
{
    //Handle events on queue
    while( SDL_PollEvent( &e ))
    {
    //User requests quit
    if( e.type == SDL_QUIT )
        {
        quit_program = true;
        }
    else if(e.type == SDL_CONTROLLERBUTTONDOWN)
        {
        count++;
        cout<<"button pushed# "<<count<<endl;
        }
     }
}

1 Ответ

0 голосов
/ 29 мая 2018

Пока вы не получите SDL_CONTROLLERBUTTONUP (для той же кнопки, конечно), вы можете считать кнопку нажатой.Затем для подсчета вы могли бы сделать что-то вроде этого (для одной кнопки):

bool that_button_pressed{false}; 
while(!quit_program) {
  //Handle events on queue
  while(SDL_PollEvent(&e)) {
    // User requests quit
    if(e.type == SDL_QUIT) 
      quit_program = true;

    if (e.type == SDL_CONTROLLERBUTTONDOWN && e.button == a_button_of_your_choice) {
      that_button_pressed = true;
    }

    if (e.type == SDL_CONTROLLERBUTTONUP && e.button == a_button_of_your_choice) {
      that_button_pressed = false;
    }
  }

  if (that_button_pressed) {
    count++;
    // Print or implement your logic
  }
}

Конечно, этот счетчик также будет зависеть от времени вашего цикла.Здесь that_button_pressed будет представлять один из SDL_GameControllerButton .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...