0

我正在尝试在 pyglet 中使用批处理来绘制标签。目前,这批用于绘制我创建的每个实体,并且一切都绘制得很好。我可以向其中添加数百个 Sprite,它们都会被绘制出来,但我创建和添加的任何标签都不会。我正在使用源存储库中最新版本的 pyglet,这是我正在使用的代码:

def _text(self, command):
    uid, x, y, chars, font, size, level = command[1:]
    print 'Text - uid=%s, x=%s, y=%s chars=%s, font=%s, size=%s, level=%s' % (uid, x, y, chars, font, size, level)
    self._ents[uid] = (pyglet.text.Label(chars,
        color=(0, 0, 0, 0),
        font_name=font,
        font_size=size,
        batch=self._batch,
        group=self._get_level_group(level)), level)
    print self._ents[uid][0].batch

对于我创建的每个标签,打印的批次具有相同的内存地址,并且与我创建的任何 Sprite 的内存地址相同。我试图深入研究源代码并尝试找出问题所在,但在我打印出批次的每一点,内存地址都是相同的。奇怪的是,当我将打印语句放在标签将自己绘制的位置时,如果它拥有自己的批次,或者如果给它一个批次,它只会在它拥有它的分支下打印东西自己的批次。如果我当时打印出批次的内存地址,则它与其他时间不同。不知何故,它似​​乎看到它应该拥有自己的批次,并且正在创建一个新批次,而不是我提供的批次。

编辑:我觉得很愚蠢。这段代码可以正常工作...一旦我在标签创建代码中添加 x=x, y=y 。它默认在屏幕的左下角,我试图绘制的字符是下划线,所以我看不到它们。一旦 SO 允许我添加这个问题的答案,或者其他人可以为 x/y 事物提供答案,我会接受它。

4

1 回答 1

0

我觉得很笨。这段代码可以正常工作...一旦我在标签创建代码中添加 x=x, y=y 。它默认在屏幕的左下角,我试图绘制的字符是下划线,所以我看不到它们。我解决了这个问题,现在一切都很好。

于 2012-09-05T00:40:33.573 回答