我正在测试pyglet lib。 我做的第一件事是画一个背景图片和一个简单的书面,这里是代码:
game_window = pyglet.window.Window(720, 1280, fullscreen=True)
game_window.set_exclusive_mouse()
background_day = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0 )
fps_label = pyglet.text.Label(text="fps: 0", x=100, y=100)
@game_window.event
def on_draw():
game_window.clear()
background_day.draw()
fps_label.draw()
if __name__ == '__main__':
pyglet.app.run()
完全没问题。然后我决定实现批量绘制,所以我改变了我的代码:
main_batch = pyglet.graphics.Batch()
background_day = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0 ,batch=main_batch)
fps_label = pyglet.text.Label(text="fps: 0", x=100, y=100,batch=main_batch)
@game_window.event
def on_draw():
game_window.clear()
main_batch.draw()
碰巧我看到了背景,但我看不到书面文字,我不知道为什么或在哪里弄错。
由于
更新
从手册中:当精灵被收集到一个批次中时,不保证它们的绘制顺序。 如果你需要确保在其他精灵之前绘制一些精灵,请使用两个精灵 或更多OrderedGroup对象以指定绘制顺序。 每个优秀的程序员都应该先阅读本手册!
答案 0 :(得分:1)
从手册中:当精灵被收集到一个批次中时,不保证它们的绘制顺序。如果需要确保在其他精灵之前绘制一些精灵,请使用两个或多个OrderedGroup对象来指定绘制顺序。
所以基本上让我们说你有背景和前景精灵,你首先创建一个批量绘制,然后两个组为背景,一个为前景:
main_batch = pyglet.graphics.Batch()
background = pyglet.graphics.OrderedGroup(0)
foreground = pyglet.graphics.OrderedGroup(1)
然后添加指定批次名称和组名称的精灵:
background = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0, batch=main_batch,group=background)
sprite1 = pyglet.sprite.Sprite(img=resources.background_day_image, x=0, y=0, batch=main_batch,group=foreground)
每位优秀的程序员都应该先阅读本手册!