В Pygame ключ задерживается - PullRequest
2 голосов
/ 01 декабря 2019
import sys
import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        elif (event.type == pygame.KEYDOWN):
            if (event.key == pygame.K_LEFT):
                print('LEFT')
            if (event.key == pygame.K_DOWN):
                print('DOWN')
            if (event.key == pygame.K_RIGHT):
                print('RIGHT')
            if (event.key == pygame.K_UP):
                print('UP')

    print('FRAME')
    pygame.display.update()
    clock.tick(1)

Если вы нажмете клавишу со стрелкой сразу после того, как напечатано «FRAME», иногда «FRAME» печатается второй раз до того, как будет напечатана клавиша со нажатием клавиши. Это как если бы pygame.event.get() задерживается. Пример:

FRAME
FRAME
          <---- UP pressed here
FRAME
UP
FRAME
FRAME
          <---- UP pressed here
FRAME
UP

Как я могу исправить это поведение?

1 Ответ

1 голос
/ 08 декабря 2019

Вы используете clock.tick(1), так что это говорит Pygame, что вы хотите 1 кадр в секунду. Это сделает все медленнее, и немного приостановит ваш код. Попробуйте изменить 1 на что-то вроде 60 или 30.

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