pyglet.sprite

显示定位、缩放和旋转的图像。

精灵是屏幕上显示的图像的实例。多个精灵可以在屏幕上的不同位置显示相同的图像。精灵也可以缩放更大或更小,以任何角度旋转,并以不透明度分数绘制。

下面的完整示例将一个 "ball.png" 图像,并为该图像创建精灵。然后在窗口的绘制事件处理程序中绘制精灵::

import pyglet

ball_image = pyglet.image.load('ball.png')
ball = pyglet.sprite.Sprite(ball_image, x=50, y=50)

window = pyglet.window.Window()

@window.event
def on_draw():
    ball.draw()

pyglet.app.run()

可以通过修改 xy 属性。其他属性决定了精灵的 rotationscaleopacity

默认情况下,精灵坐标被限制为整数值,以避免亚像素瑕疵。如果需要使用浮点,例如为了获得更平滑的动画,可以设置 subpixel 参数设置为 True 创建精灵时(:自:pyglet1.2)。

精灵的定位、旋转和缩放都遵循原始图像的锚点 (anchor_xanchor_y )。

绘制多个精灵

精灵可以被“批处理”在一起,一次绘制的速度比如果每个精灵的 draw 方法是单独调用的。下面的示例创建100个球子画面,并将它们分别添加到 Batch 。然后在一个调用中绘制整个批次的精灵::

batch = pyglet.graphics.Batch()

ball_sprites = []
for i in range(100):
    x, y = i * 10, 50
    ball_sprites.append(pyglet.sprite.Sprite(ball_image, x, y, batch=batch))

@window.event
def on_draw():
    batch.draw()

精灵可以以任何方式自由修改,即使在添加到批次之后也是如此,但是一个精灵最多只能属于一个批次。请参阅的文档 pyglet.graphics 有关批处理渲染和批处理内精灵分组的更多详细信息。

Added in version 1.1.

class Sprite

操作屏幕上的图像。

有关用法,请参阅模块文档。

group_class

用于创建渲染组的默认类。

SpriteGroup 的别名

__init__(
img: AbstractImage | Animation,
x: float = 0,
y: float = 0,
z: float = 0,
blend_src: int = 770,
blend_dest: int = 771,
batch: Batch | None = None,
group: Group | None = None,
subpixel: bool = False,
program: ShaderProgram | None = None,
) None

创建Sprite实例。

参数:
  • img (AbstractImage | Animation) -- 要显示的图像或动画。

  • x (float) -- 精灵的X坐标。

  • y (float) -- 精灵的Y坐标。

  • z (float) -- 精灵的Z坐标。

  • blend_src (int) -- GL混合源模式。 默认值适合合成从后到前绘制的精灵。

  • blend_dest (int) -- GL混合目标模式。 默认值适合合成从后到前绘制的精灵。

  • batch (Batch | None) -- 添加精灵的可选批次。

  • group (Group | None) -- 精灵的可选父组。

  • subpixel (bool) -- 允许精灵使用浮点坐标。默认情况下,坐标仅限于整值。

  • program (ShaderProgram | None) -- 用于初始化精灵的特定着色器程序。默认情况下,将根据传递的纹理类型选择预先制作的着色器。

Added in version 2.0.16: 这个 program 参数。

delete() None

强制立即从视频内存中删除精灵。

建议在删除精灵时调用此方法,因为只要精灵超出作用域,Python垃圾回收器就不一定会调用终结器。

返回类型:

None

draw() None

在当前位置绘制精灵。

有关高效绘制多个精灵的提示,请参阅模块文档。

返回类型:

None

get_sprite_group() SpriteGroup | Group

创建并返回一个用于渲染精灵的组。

This is used internally to create a consolidated group for rendering. :rtype: SpriteGroup | Group

备注

这是用于高级使用。这是一个内部自动创建的组,作为的孩子 group ,并且不需要修改,除非您的自定义组的参数发生更改。

Added in version 2.0.16.

on_animation_end() None | Literal[True]

精灵动画到达最后一帧。

仅当精灵具有动画而不是图像时才会触发该事件。对于循环动画,每次动画循环时都会触发该事件。

活动:

返回类型:

None | Literal[True]

update(
x: float | None = None,
y: float | None = None,
z: float | None = None,
rotation: float | None = None,
scale: float | None = None,
scale_x: float | None = None,
scale_y: float | None = None,
) None

同时更改位置、旋转或比例。

提供此方法是为了方便起见。一次更新多个精灵属性不会带来太大的性能优势。

参数:
  • x (float | None) -- 精灵的X坐标。

  • y (float | None) -- 精灵的Y坐标。

  • z (float | None) -- 精灵的Z坐标。

  • rotation (float | None) -- 精灵的顺时针旋转,以度为单位。

  • scale (float | None) -- 比例因子。

  • scale_x (float | None) -- 水平比例因子。

  • scale_y (float | None) -- 垂直比例因子。

返回类型:

None

自 2.0.x 版本弃用: 不再使用中央处理器上的顶点计算。现在在着色器中计算。

  • 使用 xyz ,或 position 更新位置。

  • 使用 rotation 更新轮换。

  • 使用 scale_xscale_y ,或 scale 更新规模。

property batch: Batch

图形批次。

精灵可以从一个批次迁移到另一个批次,或从其批次中删除(对于单个图形)。

备注

更改这一点可能是一项昂贵的操作,因为它涉及删除顶点列表并重新创建它。

property blend_mode: tuple[int, int]

应用于此精灵的当前混合模式。

备注

改变这一点可能是一项昂贵的操作,因为它涉及组的创建和转移。

property color: tuple[int, int, int]

混合色。

此属性设置精灵顶点的颜色。这允许使用色调绘制精灵。

颜色被指定为整数‘(红、绿、蓝)’的RGB元组。每个颜色分量必须在0(暗)到255(饱和)的范围内。

event_types: list = ['on_animation_end']
property frame_index: int

当前动画帧。

如果 Sprite.image 是一种 Animation ,可以查询或设置当前帧。如果不是动画,则该值始终为0。

property group: Group

用户指定的父图形组。

此组将始终是内部精灵组的父级。

备注

改变这一点可能是一项昂贵的操作,因为它涉及组的创建和转移。

property height: float

精灵的缩放高度。

旋转时不变的。

property image: AbstractImage | Animation

要显示的雪碧图像或动画。

备注

如果纹理不是同一纹理或阿特拉斯的一部分,更改此选项可能是一项昂贵的操作。

property opacity: int

混合不透明度。

此属性设置精灵顶点颜色的Alpha分量。使用默认混合模式(请参见构造函数),这允许绘制具有分数不透明度的精灵,与背景混合。

不透明度为255(默认值)没有任何效果。不透明度为128将使精灵显示为半透明。

property paused: bool

卸载/恢复雪碧动画。

如果 Sprite.image 是动画,则可以通过将此属性设置为True或False来暂停或恢复动画。如果不是动画,这就没有效果。

property position: tuple[float, float, float]

精灵的(x,y,z)坐标,作为一个元组。

property program: ShaderProgram

当前的着色器程序。

备注

改变这一点可能是一项昂贵的操作,因为它涉及组的创建和转移。

property rotation: float

精灵的顺时针旋转,以度为单位。

精灵图像将围绕其图像的位置(锚定_x,锚定_y)旋转。

property scale: float

基本比例因子。

比例因子1.0(默认值)没有影响。2.0的比例将绘制的精灵大小是其原始图像大小的两倍。

property scale_x: float

水平比例因子。

比例因子1.0(默认值)没有影响。2.0的比例将以其图像原始宽度的两倍绘制精灵。

property scale_y: float

垂直比例因子。

比例因子1.0(默认值)没有影响。2.0的比例将以其图像原始高度的两倍绘制精灵。

property visible: bool

如果要绘制精灵,则为True。

property width: float

精灵的缩放宽度。

旋转时不变的。

property x: float

精灵的X坐标。

property y: float

精灵的Y坐标。

property z: float

精灵的Z坐标。

class AdvancedSprite

Sprite允许您在初始化期间和之后更改着色器程序。

适合了解着色器的高级用户。

自 2.0.16 版本弃用: 与行为合并 Sprite .将在未来的版本中删除。

__init__(*args, **kwargs) None

创建Sprite实例。

参数:
  • img -- 要显示的图像或动画。

  • x -- 精灵的X坐标。

  • y -- 精灵的Y坐标。

  • z -- 精灵的Z坐标。

  • blend_src -- GL混合源模式。 默认值适合合成从后到前绘制的精灵。

  • blend_dest -- GL混合目标模式。 默认值适合合成从后到前绘制的精灵。

  • batch -- 添加精灵的可选批次。

  • group -- 精灵的可选父组。

  • subpixel -- 允许精灵使用浮点坐标。默认情况下,坐标仅限于整值。

  • program -- 用于初始化精灵的特定着色器程序。默认情况下,将根据传递的纹理类型选择预先制作的着色器。

Added in version 2.0.16: 这个 program 参数。

__new__(**kwargs)
class SpriteGroup

共享雪碧渲染组。

集团定义自定义 __eq__ ane __hash__ 方法,因此将自动与共享相同父组、纹理和混合参数的其他Sprite Group合并。

__init__(
texture: Texture,
blend_src: int,
blend_dest: int,
program: ShaderProgram,
parent: Group | None = None,
) None

创建精灵组。

Sprite 被创建;应用程序通常不需要显式创建它。

参数:
  • texture (Texture) -- 包含精灵图像的(顶级)纹理。

  • blend_src (int) -- GL混合源模式;例如, GL_SRC_ALPHA

  • blend_dest (int) -- GL混合目标模式;例如, GL_ONE_MINUS_SRC_ALPHA

  • program (ShaderProgram) -- 自定义ShaderProgram。

  • parent (Group | None) -- 可选家长组。

set_state() None

应用OpenGL状态更改。

默认实现不执行任何操作。

返回类型:

None

unset_state() None

撤销OpenGL状态更改。

默认实现不执行任何操作。

返回类型:

None