Я столкнулся с проблемой после написания небольшой программы с pygame. Программа принимает разделить .GIF анимации и загружает изображения (кадры GIF) с помощью:Значок события ввода клавиатуры Pygame
pygame.image.load(filename)
Это возвращает объект Pygame поверхность, которая затем добавляется в массив. Программа загружает около 15 кадров в массив, используя 6 массивов всего.
Проблема, возникающая у меня возникает, когда принимаю вход через мой while loop. Петля играет свою анимацию ожидания и работает анимация отлично, однако на прием ввода с клавиатуры (захватывая ввод из списка событий Pygame в ...)
for event in pygame.event.get():
через pygame.KEYDOWN
Существует очень заметное отставание, конструкция для не отвечающий анимация комплект переключение. Если я сделаю игру, используя этот метод, он должен быть исправлен. Я уверен, что мой код неэффективен, но недостаточно создавать паузы. Любая помощь будет фантастической.
Мое предположение? pygame.clock.tick()
создает своего рода событие lag, но я не уверен, как это сделать, если событие отставание даже в случае.
Вот цикл, который я подозреваю, будет проблематично:
while running == 2:
pygame.display.flip()
#mouse = pygame.mouse.get_pos()
#events = pygame.event.get()
#(pygame.QUIT, pygame.KEYDOWN, pygame.KEYUP)
for event in pygame.event.get():
#event = pygame.event.wait()
if event.type == pygame.QUIT:
sys.exit(0)
elif event.type == pygame.KEYDOWN:
print event.key
wait = 0
if event.key == pygame.K_d:
tmpcache = wr
lastkey = "wr"
elif event.key == pygame.K_a:
tmpcache = wl
lastkey = "wl"
elif event.type == pygame.KEYUP:
wait = 1
if lastkey == "wr":
tmpcache = sr
elif lastkey == "wl":
tmpcache = sl
if wait == 1:
for frame in tmpcache:
screen.blit(test, (0,0))
screen.blit(frame, (currentchar.posx, currentchar.posy))
pygame.display.flip()
clock.tick(charfps)
else:
for frame in tmpcache:
screen.blit(test, (0,0))
screen.blit(frame, (currentchar.posx, currentchar.posy))
pygame.display.flip()
clock.tick(charfps)
некоторые переменные не показаны здесь, но используются:
charfps = 30
currentchar.posx, currentchar.posy
оба являются кортежей набор на (300, 240)
появляется этот вопрос быть не по теме, потому что она принадлежит по HTTP : //gamedev.stackexchange.com – jonrsharpe
Было бы лучше на игровом деве, но это все еще о программировании. –