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 ofNone
.- __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,
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:
- classmethod from_image_sequence(
- sequence: AbstractImageSequence,
- duration: float,
- loop: bool = True,
Create an animation from a list of images and a per-frame duration.
- Return type:
- 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:
- get_max_width() int
Get the maximum image frame width.
- Return type:
This method is useful for determining texture space requirements: due to the use of
anchor_x
the actual required viewing area duringplayback may be larger.
- get_transform( ) 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: