擅长:python、mysql、java
<p>考虑使用<a href="http://www.pyglet.org/doc/api/pyglet.graphics.Batch-class.html" rel="nofollow noreferrer">Batch</a>同时绘制所有标签:</p>
<pre><code>lbls = pyglet.graphics.Batch()
for i in range(100):
label = pyglet.text.Label('Hello, world',
font_name='Times New Roman', [...], batch=lbls)
labelList.append(label)
[...]
lbls.draw()
</code></pre>
<p>虽然您的示例运行时的fps比我机器上的目标30要少一些,但是这个增强使它能够以大约60 fps的速度运行。尝试增加通过<code>schedule_interval(update,...)</code>指定的<code>update()</code>调用的频率,以找出可以达到的帧速率。在</p>
<p>另一件事是,对标签的<code>x</code>成员的每次赋值都会导致其<code>_update()</code>方法被调用,这似乎每次都会从头开始重新构建标签文本内容的可视化表示。因此,可以通过继承<code>Label</code>类并重写其<code>_set_x()</code>方法来抑制那些<code>_update()</code>调用(参见<a href="https://stackoverflow.com/questions/19780029/why-is-pyglet-so-slow-compared-to-pygame">this question</a>关于<code>Sprite</code>类的相应行为)。在</p>