我正在尝试使用 pyglet 编写一个简单的游戏,但使用 pygame 进行游戏手柄输入。以下代码成功地将轴值打印到命令行,但除了导入 pyglet 之外,实际上并没有显示 pyglet 窗口:
import pygame
import math
import sys
import pyglet
pygame.init()
pygame.joystick.init()
js = pygame.joystick.Joystick(0)
js.init()
while True:
pygame.event.get()
jx = js.get_axis(0)
print('axis 0: ' + str(jx))
我不确定 pygame.event.get() 扮演什么角色,但没有它,返回的轴值总是为零。
所以现在当我尝试在我的 pyglet 事件中使用操纵杆时,我总是得到零作为值(即使我将操纵杆保持在适当的位置并移动窗口以触发绘图事件):
import pygame
import math
import sys
import pyglet
pygame.init()
pygame.joystick.init()
js = pygame.joystick.Joystick(0)
js.init()
window = pyglet.window.Window()
@window.event
def on_draw():
jx = js.get_axis(0)
print('axis 0: ' + str(jx))
window.clear()
pyglet.app.run()
如果我将 pygame.event.get() 扔到 on_draw() 中,我会得到一个空白的白色窗口,我无法在没有控制台输出的情况下拖动它(直到我按下 esc,关闭窗口并退出,此时有几个轴值打印出来,全为零)。event.get() 卡住了吗?
因此,尽管https://groups.google.com/forum/?fromgroups=#!msg/psychopy-users/GWNE4RvGbRE/TNRKM1L2PBwJ建议了什么,使用 pygame 操纵杆似乎不仅仅涉及导入和初始化。
也许如果我使用 pygame 的事件处理它会起作用,但是当使用 pyglet 从 pygame 偶数处理程序进行绘制时,它可能会出现问题。