如何使用 Pyglet 根据按键事件显示特定的 gif?
How to display specific gif based on key press event using Pyglet?
到目前为止我得到的代码
import pyglet
from pyglet.window import key
animation = pyglet.image.load_animation('/home/arctic/Downloads/work/gif/ErrorToSurprised.gif')
animSprite = pyglet.sprite.Sprite(animation)
w = animSprite.width
h = animSprite.height
window = pyglet.window.Window(width=w, height=h, resizable=True)
@window.event
def on_key_press(symbol, modifiers):
if symbol == key.A:
animation = pyglet.image.load_animation('image1.gif')
elif symbol == key.B:
animation = pyglet.image.load_animation('image2.gif')
elif symbol == key.ENTER:
print("Enter Key Was Pressed")
@window.event
def on_draw():
window.clear()
pyglet.app.run()
这会产生错误,我不认为我在 elif symbol==key 下正确加载 gif。此函数显示 window 默认 gif。然后听一个按键,根据按键显示某个gif
这里有两个问题:
- 您在
on_draw
中没有在屏幕上绘制任何内容,因此不会显示任何内容。您需要添加 animSprite.draw()
.
- 你是正确的,你改变精灵动画的方法是错误的。目前,您只是将动画加载到本地
animation
变量中,而不对其进行任何操作。您必须将 animSprite.image
属性 更改为新动画。
这是包含这两项更改的代码版本。
import pyglet
from pyglet.window import key
initial_animation = pyglet.image.load_animation(
"/home/arctic/Downloads/work/gif/ErrorToSurprised.gif"
)
animation_1 = pyglet.image.load_animation("image1.gif")
animation_2 = pyglet.image.load_animation("image2.gif")
animSprite = pyglet.sprite.Sprite(initial_animation)
w = animSprite.width
h = animSprite.height
window = pyglet.window.Window(width=w, height=h, resizable=True)
@window.event
def on_key_press(symbol, modifiers):
if symbol == key.A:
animSprite.image = animation_1
elif symbol == key.B:
animSprite.image = animation_2
elif symbol == key.ENTER:
print("Enter Key Was Pressed")
@window.event
def on_draw():
window.clear()
animSprite.draw()
pyglet.app.run()
到目前为止我得到的代码
import pyglet
from pyglet.window import key
animation = pyglet.image.load_animation('/home/arctic/Downloads/work/gif/ErrorToSurprised.gif')
animSprite = pyglet.sprite.Sprite(animation)
w = animSprite.width
h = animSprite.height
window = pyglet.window.Window(width=w, height=h, resizable=True)
@window.event
def on_key_press(symbol, modifiers):
if symbol == key.A:
animation = pyglet.image.load_animation('image1.gif')
elif symbol == key.B:
animation = pyglet.image.load_animation('image2.gif')
elif symbol == key.ENTER:
print("Enter Key Was Pressed")
@window.event
def on_draw():
window.clear()
pyglet.app.run()
这会产生错误,我不认为我在 elif symbol==key 下正确加载 gif。此函数显示 window 默认 gif。然后听一个按键,根据按键显示某个gif
这里有两个问题:
- 您在
on_draw
中没有在屏幕上绘制任何内容,因此不会显示任何内容。您需要添加animSprite.draw()
. - 你是正确的,你改变精灵动画的方法是错误的。目前,您只是将动画加载到本地
animation
变量中,而不对其进行任何操作。您必须将animSprite.image
属性 更改为新动画。
这是包含这两项更改的代码版本。
import pyglet
from pyglet.window import key
initial_animation = pyglet.image.load_animation(
"/home/arctic/Downloads/work/gif/ErrorToSurprised.gif"
)
animation_1 = pyglet.image.load_animation("image1.gif")
animation_2 = pyglet.image.load_animation("image2.gif")
animSprite = pyglet.sprite.Sprite(initial_animation)
w = animSprite.width
h = animSprite.height
window = pyglet.window.Window(width=w, height=h, resizable=True)
@window.event
def on_key_press(symbol, modifiers):
if symbol == key.A:
animSprite.image = animation_1
elif symbol == key.B:
animSprite.image = animation_2
elif symbol == key.ENTER:
print("Enter Key Was Pressed")
@window.event
def on_draw():
window.clear()
animSprite.draw()
pyglet.app.run()