Вот проблема: я написал цикл событий для обнаружения событий keydown и keyup. Проблема, с которой я сталкиваюсь, заключается в том, что событие keydown генерирует keydown и событие keyup, когда клавиша нажата и удерживается нажатой. Я использую клавиши со стрелками для перемещения объекта, а затем, чтобы остановить движение, когда ключ освобожден (keyup). Любая помощь поможет. Благодарю. =)Проблема с поведением KEYDOWN SDL_event
Justin
P.S. Я бы опубликовал код, но я не могу заставить его выглядеть правильно.
print(" SDL_Event event;
SDL_EnableKeyRepeat(0,0);
while(SDL_PollEvent(&event)){
switch(event.type){
case SDL_QUIT:
done = true;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_ESCAPE:
done = true;
break;
case SDLK_LEFT:
animate_x = -5;
cout << "left press\n";
break;
case SDLK_RIGHT:
animate_x = 5;
break;
case SDLK_UP:
animate_y = -5;
break;
case SDLK_DOWN:
animate_y = 5;
break;
default:
break;
}
break; -left out in original
case SDL_KEYUP:
switch(event.key.keysym.sym){
case SDLK_LEFT:
cout << "left up\n";
animate_x = 0;
break;
case SDLK_RIGHT:
animate_x = 0;
break;
case SDLK_UP:
animate_y = 0;
break;
case SDLK_DOWN:
animate_y = 0;
break;
default:
break;
}
break; -left out in original
}
}");
При попытке выяснить, как отправить код, я заметил, что в двух случаях я отказался от дефолта. Код теперь работает. Он продолжал просматривать дела и выполнял код, который соответствовал тому, что было в очереди. Дурак я. Спасибо за помощь. =)
если keydown отправляет оба события. если keyup отправляет только событие keyup. не можете ли вы перестать двигаться, когда есть больше событий, связанных с клавиатурой, чем события смены ключа? – 2008-11-29 12:45:49
Нам нужен код, я думаю. Постарайтесь опубликовать то, что у вас есть, и мы рассмотрим, как это выглядит. – 2008-11-30 01:14:35