我有一個函數可以加載一個精靈表,找到一個精靈塊,然後將每個精靈放入一個列表中。在將精靈添加到列表中之前,它會將其粘貼到屏幕上。加載完精靈之後,它會遍歷整個列表,在每個精靈完成之後進行blitting。這兩組blits 應該是是相同的,但相反,第一個精靈將從列表中刪除,並且最後一個精靈將被複制。兩組位塊傳輸的是這樣的:pygame精靈列表失去了它的第一個元素,並獲得了最後一個副本
每個精靈是圖混合在它被添加到列表中的順序,從左到右,從上到下去,所以第一個精靈是左上角一個,最後一個是右下角。
下面是加載精靈功能:
def assembleSprites(name, screen):
"""Given a character name, this function will return a list of all that
character's sprites. This is used to populate the global variable spriteSets"""
spriteSize = (35, 35)
spritesheet = pygame.image.load("./images/patchconsprites.png")
sprites = []
start = charCoords[name]
char = list(start)
image = pygame.Surface((35,35))
# load each sprite and blit them as they're added to the list
for y in range(5):
char[0] = start[0]
for x in range(9):
rect = (char[0], char[1], char[0]+spriteSize[0], char[1]+spriteSize[1])
image.blit(spritesheet, (0,0), rect)
image = image.convert()
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
screen.blit(image, (x*40, y*40))
pygame.display.update()
sprites.append(image)
char[0] += spriteSize[0]+2
char[1] += spriteSize[1]+2
# check that the list was constructed correctly
count = 0
for y in range(6,11):
for x in range(9):
screen.blit(sprites[count], (x*40,y*40))
count += 1
pygame.display.update()
return sprites
任何人看到我是如何擰名單嗎?
嘗試在第二組的每個blit後更新顯示。看看「sprites」裏面究竟是什麼。 – SilentGhost 2010-09-16 18:56:46
@SilentGhost:它們的顯示方式與在圖片中的顯示方式相同,只是一次一個。 – Max 2010-09-16 19:02:21
獨立代碼(+鏈接到源png文件)可能會得心應手。 – tokland 2010-09-16 19:16:19