Я делаю игру на Python с Pygame, и этот раздел кода вызывает проблему.
#Game Mainloop
isRunning = True
while isRunning:
for event in pygame.event.get():
if event.type == pygame.QUIT:
isRunning = False
elif event.type == pygame.KEYDOWN:
key = str(event.key)
print(key + " is down")
if event.key == pygame.K_w:
Globals.camera_move = 1
elif event.key == pygame.K_s:
Globals.camera_move = 2
elif event.key == pygame.K_a:
Globals.camera_move = 3
elif event.key == pygame.K_d:
Globals.camera_move = 4
elif event.type == pygame.KEYUP:
key = str(event.key)
print(key + " is up")
Globals.camera_move = 0
Моя проблема в том, что событие pygame.KEYUP
запускается до того, как ключ отпущен.
Например, если я нажимаю клавишу W вниз, то срабатывает событие KEYDOWN
, и на терминал один раз выводится «119 is down».
Но тогдаесли я продолжу удерживать нажатой клавишу W , событие KEYUP
будет запущено, и на терминал несколько раз будет напечатано «119 is up».
Когда W ключ отпущен, печать прекращается в терминал.
Я искал проблемы, похожие на мои, и самое близкое, что я мог найти, это this .Причина, по которой моя проблема иная, заключается в том, что их проблема была устранена путем прямого подключения к их компьютеру вместо удаленного vnc.
Я не использую удаленную клавиатуру, так как я напрямую подключен к машине linux.Я также запустил код на отдельной машине с Windows и получил ту же проблему.