我正试图写我的第一个pyglet动画,但遇到了一个问题。在
我有一个从on_draw
函数调用的更新函数。它会做它应该做的,但是它会在循环的任意位置停止。
如果我开始移动鼠标,它会继续向下循环。在
我看到在2011年有一个关于同样问题的问题,但是没有相关的答案:(pyglet on_draw event occurs only when mouse moves)
为了工作,我需要继续调用on_draw中的update函数。在
这是两个函数的代码:
def update(zd):
stripe.y += zd[0]
stripe._set_rotation(zd[0])
@window.event
def on_draw():
window.clear()
window.clear()
batch.draw()
try:
update(next(calc))
except:
pass
我从一个大循环得到了zd的更新,在calc函数中有很多计算。在
在这里,请尝试以下代码:
请注意,在这段代码中并没有真正调用on\u draw()。
在传统的pyglet代码中,
on_draw()
只在事件存在时调用,通常使用计时器或其他计划的事件来触发这些事件。。移动鼠标就是这样一个事件。这是您习惯使用的传统
app.run()
的手动重写。所以这里的两个主要功能是:
event = self.dispatch_events()
第一个方法从pyglet获取任何事件,有效地释放了所有锁,因为即使是空事件也必须被获取。 第二个是呈现函数,这是
on_draw()
通常所做的,只是我们现在可以随时调用它(或者随时调用)。在我不是专家,但这对99%的图形用户界面都有效,只要你不打算做大量的3D游戏,这将为你做这项工作。在
相关问题 更多 >
编程相关推荐