python - Pyglet 没有调用 on_draw
问题描述
我正在尝试制作一个简单的游戏,但我遇到了问题
这是我的代码:
from myvector import myVector
from car import Car
import pyglet
width = 1000
height = 600
agent = None
agent = Car(int(width/2), int(height/2))
window = pyglet.window.Window()
window.set_size(width,height)
@window.event
def on_key_press(symbol, modifiers):
if symbol == 119: # w
agent.applyForce(myVector(-1, 0))
if symbol == 115: # s
agent.applyForce(myVector(1, 0))
if symbol == 97: # a
agent.applyForce(myVector(0, -1))
if symbol == 100: # d
agent.applyForce(myVector(0, 1))
@window.event
def on_draw():
window.clear()
agent.update()
agent.sprite.draw()
print(1)
if __name__ == "__main__":
pyglet.app.run()
问题是on_draw
只有当我在键盘上输入内容时才会调用事件
我正在使用 python 3.6 和最新的 pyglet 包
我在网上一无所获,为什么会这样?
解决方案
Pygleton_draw
仅在事件发生时调用。用于pyglet.clock.schedule_interval
由计时器发明连续调用函数。这on_draw
也导致触发:
@window.event
def on_draw():
window.clear()
agent.update()
agent.sprite.draw()
print(1)
def update(dt):
# update objects
# [...]
pass
if __name__ == "__main__":
pyglet.clock.schedule_interval(update, 1/60) # schedule 60 times per second
pyglet.app.run()
推荐阅读
- docker - Dockerize 在 RedHat 上运行的应用程序 - 如何处理?
- java - 如何在 Apache Delta Spike 中执行存储过程
- c - 即使存在消息队列,msgget() 方法也会失败
- android - Android:BottomAppBar 和 BottomNavView 之间的空间
- php - PHP从Ajax请求中读取错误数据..不是缓存问题
- angular - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“对象”类型
- python - Conda - 如何在现有环境中仅更新 cudatoolkit?
- syntax - 我收到无效的语法和未定义的模型
- mongodb - 在 Robo3T 中获取 0 条记录
- javascript - Bootstrap 4 carousel data-slide-to 基于 data-id (Jquery)