You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
913 B

import tkinter as tk
import itertools
class AnimatedSprite:
def __init__(self, path, sprite_size):
self.frames = []
self.sprite_size = sprite_size # Size of each sprite in the sheet
self.load_frames(path)
self.index = itertools.cycle(range(len(self.frames)))
def load_frames(self, path):
spritesheet = tk.PhotoImage(file=path)
spritesheet_width = spritesheet.width()
spritesheet_height = spritesheet.height()
for y in range(0, spritesheet_height, self.sprite_size[1]):
for x in range(0, spritesheet_width, self.sprite_size[0]):
frame = spritesheet.subimage(x, y, x + self.sprite_size[0], y + self.sprite_size[1])
resized_frame = frame.subsample(1) # Resize image to half
self.frames.append(resized_frame)
def next_frame(self):
return self.frames[next(self.index)]