【发布时间】:2016-04-01 19:28:43
【问题描述】:
我有一个对象,它会根据它面对的方向改变它的显示。该对象采用 4x4 帧网格,并使用每行 4 帧作为每个状态的动画。
目前,我正在使用以下方法将它们加载到单独的精灵中:
def create_animation(image_grid, start_idx, end_idx):
frames = []
for frame in image_grid[start_idx:end_idx]:
frames.append(pyglet.image.AnimationFrame(frame, 0.1))
return pyglet.sprite.Sprite(pyglet.image.Animation(frames))
然后将应该显示的精灵添加到要绘制的batch,并在不应该绘制时将其删除。
但是,阅读文档时,我看到了:
Sprite.batch精灵可以从一个批次迁移到另一个批次,或从其批次中移除(用于单个绘图)。请注意,这可能是一项昂贵的操作。
有没有更好的方法来实现我正在尝试做的事情,而不会影响批量切换单个精灵的性能?
【问题讨论】:
-
您可以尝试在需要时简单地翻转精灵的
visible属性,然后将它们留在批处理中。检查visible布尔值以查看是否应绘制精灵应该比将它们从批次中交换更快。 -
@Josh 这就是我最终做的事情,愿意把它写成答案吗?
标签: python python-3.x pyglet