pyglet on_draw事件仅在鼠标移动时发生

帕维尔·沃罗比约夫(Pavel Vorobyov)

我有一个奇怪的问题。当pyglet应用程序启动时,它只会绘制1-2帧,然后冻结。on_draw事件只是停止发生。但是,每当我移动鼠标或按下键时,也会调度on_draw事件。简而言之,我必须移动鼠标才能使pyglet应用程序基本运行。

这实际上是在Windows中发生的。在带有compiz的Ubuntu中,我只需要移动一次鼠标,然后应用程序即可开始正常工作。

这是我的代码示例:

#!/usr/bin/env python

import pyglet

win = pyglet.window.Window(width=800, height=600)
label = pyglet.text.Label('Abc', x=5, y=5)

@win.event
def on_draw():
    win.clear()
    label.x += 1
    label.draw()

pyglet.app.run()

这是一段解释事情的视频

蒂姆·辛普金斯(Timm Simpkins)

我昨晚遇到这个问题时试图找出同样的问题。我弄清楚是什么原因造成的。

我曾经用过一个装饰器,然后将更新放在on_draw方法中,它会运行一会儿,然后冻结,直到当我移动鼠标或敲击键盘时才重新开始工作。我尝试了各种技巧来弄清楚这一点,最后我认为也许事情运行得太快了,将它们分批处理并让pyglet决定何时更新它们会更好。有效。

我还计划了一些事情,以便它们的运行速度大约是我的刷新率的两倍,但是速度却不如它会使任何故障停滞不前。这对于平滑动画来说绰绰有余。

needles_list = [gauges.speedometer.Needle(speedometer_data, needle, batch=batch, group=needles),
                gauges.tachometer.Needle(tachometer_data, needle, batch=batch, group=needles)]

def update(dt):
for needle in needles_list:
    needle.update(dt)

pyglet.clock.schedule_interval(update, 1/120.0)

gauges.speedometer.Needle和gauges.tachometer.Needle是pyglet.sprite.Sprite的子类,我为它们各自编写了一个更新方法。然后,我像往常一样在on_draw中调用了他们的draw方法。

@window.event()
def on_draw():
    window.clear()
    batch.draw()

我知道这个问题已经解决了一段时间了,询问者可能已经放弃了,但是希望它将对遇到此问题的其他人有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pyglet on_draw事件仅在鼠标移动时发生

来自分类Dev

如何限制pyglet中的FPS?(窗口on_draw事件)

来自分类Dev

Pyglet没有调用on_draw

来自分类Dev

控制关闭事件pyglet

来自分类Dev

运行pyglet时出现NameError

来自分类Dev

在鼠标拖动Pyglet周围绘制矩形

来自分类Dev

Pyglet:使用on_resize()事件导致我的文本消失

来自分类Dev

Pyglet错误地将所有鼠标单击解释为左键单击

来自分类Dev

pyglet仅在使用其他绘制命令后才显示形状

来自分类Dev

如何在Python的pyglet库中使用batch.draw()绘制精灵

来自分类Dev

通过Pyglet在python中播放MP3文件时遇到问题

来自分类Dev

在Pyglet(Raspberry Pi 4B,Raspbian)中播放音频时听不到声音

来自分类Dev

是否有理由在迭代和绘制字典或数组时使用pyglet批处理?

来自分类Dev

子类化窗口时如何在pyglet中安排回调

来自分类Dev

Pyglet图像渲染

来自分类Dev

用Pyglet绘制基元

来自分类Dev

pyglet中的平滑运动

来自分类Dev

Pyglet纹理被弄乱了

来自分类Dev

Pyglet图像绘制问题

来自分类Dev

如何关闭pyglet窗口?

来自分类Dev

Pyglet 大型精灵故障

来自分类Dev

python pyglet on_mouse_press

来自分类Dev

python pyglet on_mouse_press

来自分类Dev

如何更改pyglet窗口的颜色

来自分类Dev

角色仅在鼠标移动时移动

来自分类Dev

鼠标脱离JTable时发生鼠标事件?

来自分类Dev

如何在课程中使用pyglet

来自分类Dev

Pyglet vertex_list_indexed异常

来自分类Dev

将图像或动画保存在pyglet中