sempre que executo este código, a animação é executada de maneira suave, mas, pelo que parece, quando a temperatura chega ao comprimento da lista e volta a zero, a imagem pisca
não é que as imagens que estão sendo animadas não estão sincronizadas corretamente fiz um gif para ver se as imagens tinham algum problema de enquadramento mas não tem nenhum no gif a animação é suave
exemplo de replicação com imagens
import pygame,os
pygame.init()
window=pygame.display.set_mode((600,600))
clock=pygame.time.Clock()
run=[]
for image in os.listdir("run"):
run.append(
pygame.transform.scale(
pygame.image.load("run/" + image),
(40, 40),
).convert_alpha()
)
temp=0
diff=0.2
index=0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
temp+=diff
if temp>=len(run):
temp=0
index=int(temp)
print(index)
window.fill("white")
window.blit(run[index],(300,300))
pygame.display.flip()
clock.tick(60)
Observe que isso
os.listdir
retorna as imagens em ordem arbitrária. Então, sugiro classificar a lista de nomes de arquivos:No entanto, você precisa alterar os nomes das imagens. As imagens são classificadas em ordem alfabética pelo nome:
Altere os nomes:
Como alternativa, você pode usar expressões regulares para classificar os nomes (consulte Verificar com qual número uma string termina em Python ). Escreva uma função que retorne o número final do nome do arquivo:
Classifique a lista de uso dessa função: