Почему вызывается событие pygame.KEYUP, когда ключ еще не отпущен? - PullRequest
0 голосов
/ 28 ноября 2018

Я делаю игру на 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 и получил ту же проблему.

...