python 中的角色动画无法正常工作
Character Animation in python not working
我正忙于使用 tkinter、time 和 PIL 在 python 中制作游戏,我有一个角色,我想非常简单地制作动画,但是当我尝试这段代码时,它没有做任何事情然后跳到最后一张图,谁能告诉我这是为什么?
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)
感谢任何帮助
由于character
是对PhotoImage
的引用,c.delete(character)
不会如您所愿删除canvas中的图像。您可以使用 c.create_image(...)
的 tag
选项来识别图像并使用 c.delete()
中的标签。另外为了看到动画效果,需要在c.create_image(...)
.
之后调用c.update()
下面是更新的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)
我正忙于使用 tkinter、time 和 PIL 在 python 中制作游戏,我有一个角色,我想非常简单地制作动画,但是当我尝试这段代码时,它没有做任何事情然后跳到最后一张图,谁能告诉我这是为什么?
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)
感谢任何帮助
由于character
是对PhotoImage
的引用,c.delete(character)
不会如您所愿删除canvas中的图像。您可以使用 c.create_image(...)
的 tag
选项来识别图像并使用 c.delete()
中的标签。另外为了看到动画效果,需要在c.create_image(...)
.
c.update()
下面是更新的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)