【问题标题】:How to display specific gif based on key press event using Pyglet?如何使用 Pyglet 根据按键事件显示特定的 gif?
【发布时间】:2022-01-08 21:21:00
【问题描述】:

到目前为止我得到的代码

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 符号 == 键下无法正确加载 gif。这个函数显示一个窗口默认的 gif。然后听一个按键,根据按键显示某个gif

【问题讨论】:

    标签: python gif keypress keyevent pyglet


    【解决方案1】:

    这里有两个问题:

    1. on_draw 中您没有在屏幕上绘制任何内容,因此不会出现任何内容。您需要添加animSprite.draw()
    2. 您是正确的,您更改精灵动画的方法是错误的。目前,您只是将动画加载到本地 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多