用于在精灵表上分离图像的最佳方法是什么?

时间:2014-07-13 22:43:37

标签: python animation pygame sprite sprite-sheet

寻找下载网站或任何可用于将精灵分开的工具。请让我知道你有什么想法我一直在使用一个名为sprite splitter的下载,但它不再适用于包含10个以上图像的精灵表...谢谢!

应该添加香港专业教育学院一直使用spriters-resources获取我的精灵表。

1 个答案:

答案 0 :(得分:2)

在pygame中,您可以加载一个具有多个精灵的图像,然后使用它来创建许多子表面并将其用作分离的图像。因此,您不必在许多文件中拆分一个工作表。

subsurface()

你可以使用pygame函数将任何子表面保存为分隔文件。

pygame.image.save()


修改

用于动画的一张图片。

import pygame
import pygame.locals

pygame.init()
screen = pygame.display.set_mode((300,300))

# one image -> 7 subsurfaces

sheet = pygame.image.load('explosed-sprite.png').convert_alpha()

imgs = []

for x in range(7):
    imgs.append( sheet.subsurface((20*x,0,20,20)) )

current_img = 0

# clock - FPS

clock = pygame.time.Clock()

# mainloop 

running = True

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                running = False

    # next image modulo 7
    current_img = ( current_img + 1 ) % 7 

    screen.fill( (0,0,0) )
    screen.blit( imgs[current_img], (150-10,150-10) )
    pygame.display.flip()

    clock.tick(12)

# save subsurfaces as separated images

for x in range(7):
    name = 'frame_' + str(x) + '.png'
    pygame.image.save( imgs[x], 'frame_' + str(x) + '.png' ) 
    print name, 'saved'

# the end
pygame.quit()

explosed-sprite.png

使用python脚本将此图像另存为explosed-sprite.png