簡體   English   中英

如何使用 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 符號 == 鍵下正確加載了 gif。 此 function 顯示 window 默認 gif。 然后聽一個按鍵,根據按鍵顯示一定的gif

這里有兩個問題:

  1. 您沒有在on_draw中在屏幕上繪制任何內容,因此不會出現任何內容。 您需要添加animSprite.draw()
  2. 您是正確的,您更改精靈動畫的方法是錯誤的。 目前,您只是將 animation 加載到本地animation變量中,並且什么都不做。 您必須將animSprite.image屬性更改為新的 animation。

這是包含這兩項更改的代碼版本。

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM