Анимация персонажа в python не работает - PullRequest
0 голосов
/ 09 апреля 2020

Я занят созданием игры в python, использующей tkinter, time и PIL, и у меня есть персонаж, которого я хочу очень просто анимировать, но когда я пробую этот код, он ничего не делает, затем переходит к Последнее изображение, может кто-нибудь, пожалуйста, скажите мне, почему это так?

def move_char(event):
if event.keysym == "w":
    character = ch1
    c.delete(character)
    character = ch2_1
    c.create_image(725, 450, image = character)
    sleep(0.2)
    c.delete(character)
    character = ch2
    c.create_image(725, 450, image = character)
    sleep(0.2)
    c.delete(character)
    character = ch2_2
    c.create_image(725, 450, image = character)
    sleep(0.2)
    c.delete(character)
    character = ch2
    c.create_image(725, 450, image = character)

Цените любую помощь

1 Ответ

0 голосов
/ 09 апреля 2020

Поскольку character является ссылкой на PhotoImage, c.delete(character) не удалит изображение на холсте, как вы sh. Вы можете использовать tag параметр c.create_image(...), чтобы идентифицировать изображение и использовать тег в c.delete(). Также для того, чтобы увидеть эффект анимации, вам нужно позвонить c.update() после c.create_image(...).

Ниже обновлено move_char(...):

def move_char(event):
    if event.keysym == "w":
        # loop through the images
        for ch in (ch2_1, ch2, ch2_2, ch2):
            c.delete('char-image') # remove current image
            c.create_image(725, 450, image=ch, tag='char-image') # use tag to identify image
            c.update() # make the change effective
            sleep(0.2)
...