在循环中使用并添加到 pygame 批处理

我正在使用 Pyglet 开发一个简单的烛台图表绘图程序。当我尝试在一个循环中批处理形状时,pyglet 只绘制第一个形状(我认为)。我已经包含了一些最少的代码来解释我的问题。这段代码应该在窗口上显示 10 个又细又长的矩形,但我只得到一个矩形。


import pyglet

from pyglet import shapes


window = pyglet.window.Window(960, 540)

batch = pyglet.graphics.Batch()


for i in range(10):

    rectangle = shapes.Rectangle(10*i, 100, 5, 100, color=(0,255,0), batch=batch)


@window.event

def on_draw():

    window.clear()

    batch.draw()


pyglet.app.run()

print(batch)

这样的事情很好用:


rectangle1 = shapes.Rectangle(10, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle2 = shapes.Rectangle(20, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle3 = shapes.Rectangle(30, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle4 = shapes.Rectangle(40, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle5 = shapes.Rectangle(50, 100, 5, 100, color=(0,255,0), batch=batch)

但这不会:


rectangle = shapes.Rectangle(10, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle = shapes.Rectangle(20, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle = shapes.Rectangle(30, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle = shapes.Rectangle(40, 100, 5, 100, color=(0,255,0), batch=batch)

rectangle = shapes.Rectangle(50, 100, 5, 100, color=(0,255,0), batch=batch)

这对我来说意味着批处理对象只是指批处理中的形状对象,这将使我无法使用 pyglet 批处理绘制图形数据的计划,我在这个假设中是否正确?


HUWWW
浏览 99回答 1
1回答

明月笑刀无情

我建议将形状添加到列表中:rectangles = []  for i in range(10):      rectangles.append(shapes.Rectangle(10*i, 100, 5, 100, color=(0,255,0), batch=batch))分别rectangles = [shapes.Rectangle(10*i, 100, 5, 100, color=(0,255,0), batch=batch) for i in range(10)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python