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()
可以通过修改 x
和 y
属性。其他属性决定了精灵的 rotation
, scale
和 opacity
。
默认情况下,精灵坐标被限制为整数值,以避免亚像素瑕疵。如果需要使用浮点,例如为了获得更平滑的动画,可以设置 subpixel
参数设置为 True
创建精灵时(:自:pyglet1.2)。
精灵的定位、旋转和缩放都遵循原始图像的锚点 (anchor_x
, anchor_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,
创建Sprite实例。
- 参数:
img (
AbstractImage
|Animation
) -- 要显示的图像或动画。x (
float
) -- 精灵的X坐标。y (
float
) -- 精灵的Y坐标。z (
float
) -- 精灵的Z坐标。blend_src (
int
) -- GL混合源模式。 默认值适合合成从后到前绘制的精灵。blend_dest (
int
) -- GL混合目标模式。 默认值适合合成从后到前绘制的精灵。subpixel (
bool
) -- 允许精灵使用浮点坐标。默认情况下,坐标仅限于整值。program (
ShaderProgram
|None
) -- 用于初始化精灵的特定着色器程序。默认情况下,将根据传递的纹理类型选择预先制作的着色器。
Added in version 2.0.16: 这个 program 参数。
- 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.
- 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,
同时更改位置、旋转或比例。
提供此方法是为了方便起见。一次更新多个精灵属性不会带来太大的性能优势。
- 参数:
- 返回类型:
自 2.0.x 版本弃用: 不再使用中央处理器上的顶点计算。现在在着色器中计算。
使用
x
,y
,z
,或position
更新位置。使用
rotation
更新轮换。使用
scale_x
,scale_y
,或scale
更新规模。
- property batch: Batch
图形批次。
精灵可以从一个批次迁移到另一个批次,或从其批次中删除(对于单个图形)。
备注
更改这一点可能是一项昂贵的操作,因为它涉及删除顶点列表并重新创建它。
- property color: tuple[int, int, int]
混合色。
此属性设置精灵顶点的颜色。这允许使用色调绘制精灵。
颜色被指定为整数‘(红、绿、蓝)’的RGB元组。每个颜色分量必须在0(暗)到255(饱和)的范围内。
- property image: AbstractImage | Animation
要显示的雪碧图像或动画。
备注
如果纹理不是同一纹理或阿特拉斯的一部分,更改此选项可能是一项昂贵的操作。
- property opacity: int
混合不透明度。
此属性设置精灵顶点颜色的Alpha分量。使用默认混合模式(请参见构造函数),这允许绘制具有分数不透明度的精灵,与背景混合。
不透明度为255(默认值)没有任何效果。不透明度为128将使精灵显示为半透明。
- property program: ShaderProgram
当前的着色器程序。
备注
改变这一点可能是一项昂贵的操作,因为它涉及组的创建和转移。
- 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)