这是一个愚蠢的示例,当您按下左/右时,它会在 spritesheet 的两个第一张图像之间交替:
import pygame
quit = False
pygame.init()
display = pygame.display.set_mode((640,480))
sprite_sheet = pygame.image.load('sprite.bmp').convert()
# by default, display the first sprite
image_number = 0
while quit == False:
event = pygame.event.poll()
no_more_events = True if event == pygame.NOEVENT else False
# handle events (update game state)
while no_more_events == False:
if event.type == pygame.QUIT:
quit = True
break
elif event.type == pygame.NOEVENT:
no_more_events = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
image_number = 0
elif event.key == pygame.K_RIGHT:
image_number = 1
event = pygame.event.poll()
if quit == False:
# redraw the screen
display.fill(pygame.Color('white'))
area = pygame.Rect(image_number * 100, 0, 100, 150)
display.blit(sprite_sheet, (0,0), area)
pygame.display.flip()
我以前从来没有真正使用过 Pygame,所以也许这段代码不应该作为一个例子。我希望它显示了基础知识。
为了更完整,我应该在更新之前等待一段时间,例如控制我每秒只更新 60 次。
编写一个可以简化工作的精灵类也很方便。您将在构造函数中传递一个精灵帧的大小,并且您将拥有类似的方法,它会自动完成选择下一帧、对精灵进行 blitting 等update()
工作draw()
。
Pygame 似乎为此目的提供了一个基类:链接文本。