1

我有一个游戏的函数,message_box,它显示了一个漂亮的背景(一个 Sprite),在它的顶部,一个标签(它的文本是string接收到的参数)。

当我调用它的方法 draw() 时,它起作用了,并且精灵显示在屏幕上。但是我需要批量使用它,所以它可以与其他元素一起渲染(在这种情况下是一个标签)。可悲的是,只有标签被渲染。我尝试过只使用 Sprite 的批次,但同样没有运气。

这是代码:

    def message_box(self, string):
        batch = pyglet.graphics.Batch()
        dialog = pyglet.text.Label(string + " (Press ESC)",
                          font_name="Arial",
                          font_size=12,
                          x=cfg.resolution[0] / 3 + 26,
                          y=400,
                          anchor_x="center", anchor_y="center", batch=batch)
        img = pyglet.resource.image('gui/dialog_full.png')
        dia = pyglet.sprite.Sprite(img, batch=batch)
        dia.x = 26
        dia.y = 196
        batch.draw()

我是 python 和 pyglet 的初学者,所以我真的不知道这里发生了什么。

4

2 回答 2

0

您为 anchor_x 和 anchor_y 提供了标签明确的坐标,但没有为您的图像提供。你确定你的精灵没有画在窗外吗?

于 2013-05-20T06:25:58.010 回答
0

这可能是您的显卡的兼容性问题。

AMD/ATI 卡的一个已知问题是: Pyglet: Sprite.draw() 和 Batch.draw() 不起作用,但 Image.blit 可以

于 2013-09-08T11:42:52.507 回答