pyglet.image.animation

2D Animations.

Animations can be used by the Sprite class in place of static images. They are essentially containers for individual image frames, with a duration per frame. They can be infinitely looping, or stop at the last frame. You can load Animations from disk, such as from GIF files:

ani = pyglet.resource.animation('walking.gif')
sprite = pyglet.sprite.Sprite(img=ani)

Alternatively, you can create your own Animations from a sequence of images by using the from_image_sequence() method:

images = [pyglet.resource.image('walk_a.png'),
          pyglet.resource.image('walk_b.png'),
          pyglet.resource.image('walk_c.png')]

ani = pyglet.image.Animation.from_image_sequence(images, duration=0.1, loop=True)

You can also use an pyglet.image.ImageGrid, which is iterable:

sprite_sheet = pyglet.resource.image('my_sprite_sheet.png')
image_grid = pyglet.image.ImageGrid(sprite_sheet, rows=1, columns=5)

ani = pyglet.image.Animation.from_image_sequence(image_grid, duration=0.1)

In the above examples, all the Animation Frames have the same duration. If you wish to adjust this, you can manually create the Animation from a list of AnimationFrame:

image_a = pyglet.resource.image('walk_a.png')
image_b = pyglet.resource.image('walk_b.png')
image_c = pyglet.resource.image('walk_c.png')

frame_a = pyglet.image.AnimationFrame(image_a, duration=0.1)
frame_b = pyglet.image.AnimationFrame(image_b, duration=0.2)
frame_c = pyglet.image.AnimationFrame(image_c, duration=0.1)

ani = pyglet.image.Animation(frames=[frame_a, frame_b, frame_c])
class Animation

Sequence of images with timing information.

Animations are a collection of :py:class:`~AnimationFrame`s, which are simple containers for Image data and duration information.

If no frames of the animation have a duration of None, the animation loops continuously; otherwise the animation stops at the first frame with duration of None.

__init__(frames: list[pyglet.image.animation.AnimationFrame]) None

Create an animation directly from a list of frames.

add_to_texture_bin(
texture_bin: TextureBin,
border: int = 0,
) None

Add the images of the animation to a TextureBin.

The animation frames are modified in-place to refer to the texture bin regions. An optional border (in pixels) can be specified to reserve around the images that are added to the texture bin.

Return type:

None

classmethod from_image_sequence(
sequence: AbstractImageSequence,
duration: float,
loop: bool = True,
) Animation

Create an animation from a list of images and a per-frame duration.

Return type:

Animation

get_duration() float

Get the total duration of the animation in seconds.

Return type:

float

get_max_height() int

Get the maximum image frame height.

This method is useful for determining texture space requirements: due to the use of anchor_y the actual required viewing area during playback may be larger.

Return type:

int

get_max_width() int

Get the maximum image frame width.

Return type:

int

This method is useful for determining texture space requirements: due to the use of anchor_x the actual required viewing area during

playback may be larger.

get_transform(
flip_x: bool = False,
flip_y: bool = False,
rotate: Literal[0, 90, 180, 270, 360] = 0,
) Animation

Create a copy of this animation, applying a simple transformation.

The transformation is performed by manipulating the texture coordinates, which limits this operation to increments of 90 degrees.

The transformation is applied around the image’s anchor point of each frame. The texture data is shared between the original animation and the transformed animation.

Return type:

Animation

class AnimationFrame

A single frame of an animation.

__init__(
image: AbstractImage,
duration: float | None,
) None

Create an animation frame from an image.

duration
image