Pyglet: спрайт не рисуется при пакетном использовании

У меня есть эта функция для игры, message_box, которая показывает красивый фон (спрайт) и вверху его метку (это текст - полученный параметр string).

Когда я вызываю его метод draw(), он работает, и спрайт отображается на экране. Но мне нужно использовать его в пакетном режиме, чтобы его можно было отображать с другими элементами (в данном случае с меткой). К сожалению, отображается только метка. Я пытался использовать партию только со спрайтом, но снова безуспешно.

Вот код:

    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, поэтому я действительно понятия не имею, что здесь происходит.


person Leprosy    schedule 30.04.2013    source источник


Ответы (2)


Вы указали для своей метки определенные координаты для anchor_x и anchor_y, но не свое изображение. Вы уверены, что ваш спрайт не рисует за окном?

person Crowbeak    schedule 20.05.2013

Это может быть проблема совместимости с вашей видеокартой.

Известная проблема связана с картами AMD/ATI: Pyglet: Sprite.draw() и Batch.draw() не работают, а Image.blit работает

person Rolf Schorpion    schedule 08.09.2013