Pyglet:绘制一批

时间:2015-04-16 09:18:05

标签: python python-2.7 pyglet

我正在测试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对象以指定绘制顺序。 每个优秀的程序员都应该先阅读本手册!

1 个答案:

答案 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)  

每位优秀的程序员都应该先阅读本手册!