如何在图片之间添加等待
How to add waits in-between pictures
我想在按下'w'键创建行走动画后制作两张重叠的图片:
#Imports
import turtle
import time
#Registers Gifs
turtle.register_shape("ZeldaBackToolless1.gif")
turtle.register_shape("ZeldaBackToolless2.gif")
Zelda = turtle.Turtle()
Zelda.penup()
def move_up():
if Waiting == True:
time.sleep(.2)
Zelda.shape("ZeldaBackToolless1.gif")
Waiting = False
else:
time.sleep(.2)
Zelda.shape("ZeldaBackToolless2.gif")
Waiting = True
turtle.listen()
turtle.onkeypress(move_up, "w")
我认为,如果有一种方法可以在 move_up()
函数中创建一个布尔语句并保存它之前的状态,那会很有效。
虽然我很讨厌这样建议,但在这个级别的编程中最简单的方法是使用全局状态变量:
waiting = True
def move_up():
global waiting
time.sleep(.2)
if waiting:
Zelda.shape("ZeldaBackToolless1.gif")
else:
Zelda.shape("ZeldaBackToolless2.gif")
waiting = !waiting
甚至更短,您可以使用您的标志作为列表索引:
waiting = True
def move_up():
global waiting
display = ["ZeldaBackToolless1.gif", "ZeldaBackToolless2.gif"]
waiting = !waiting
time.sleep(.2)
Zelda.shape(dislpay[waiting])
我觉得你的解决方案和@Prune 的解决方案都是ill-considered。通过使用 time.sleep()
,您将阻止其他海龟事件。如果这最终打算作为 wait 图像,那么您最不想做的就是阻止您正在等待的东西。这真的应该用定时器事件来完成:
from turtle import Screen, Turtle
def walk():
screen.onkeypress(None, "w") # disable handler in handler
def stop_walk():
zelda.shape("image_2.gif")
screen.onkeypress(walk, "w") # restore event handler
zelda.shape("image_1.gif")
screen.ontimer(stop_walk, 200) # in the future, in milliseconds
screen = Screen()
# Registers Gifs
screen.register_shape("image_1.gif")
screen.register_shape("image_2.gif")
zelda = Turtle()
zelda.penup()
screen.onkeypress(walk, "w")
screen.listen()
screen.mainloop()
这将允许其他海龟事件在等待期间继续进行。
我想在按下'w'键创建行走动画后制作两张重叠的图片:
#Imports
import turtle
import time
#Registers Gifs
turtle.register_shape("ZeldaBackToolless1.gif")
turtle.register_shape("ZeldaBackToolless2.gif")
Zelda = turtle.Turtle()
Zelda.penup()
def move_up():
if Waiting == True:
time.sleep(.2)
Zelda.shape("ZeldaBackToolless1.gif")
Waiting = False
else:
time.sleep(.2)
Zelda.shape("ZeldaBackToolless2.gif")
Waiting = True
turtle.listen()
turtle.onkeypress(move_up, "w")
我认为,如果有一种方法可以在 move_up()
函数中创建一个布尔语句并保存它之前的状态,那会很有效。
虽然我很讨厌这样建议,但在这个级别的编程中最简单的方法是使用全局状态变量:
waiting = True
def move_up():
global waiting
time.sleep(.2)
if waiting:
Zelda.shape("ZeldaBackToolless1.gif")
else:
Zelda.shape("ZeldaBackToolless2.gif")
waiting = !waiting
甚至更短,您可以使用您的标志作为列表索引:
waiting = True
def move_up():
global waiting
display = ["ZeldaBackToolless1.gif", "ZeldaBackToolless2.gif"]
waiting = !waiting
time.sleep(.2)
Zelda.shape(dislpay[waiting])
我觉得你的解决方案和@Prune 的解决方案都是ill-considered。通过使用 time.sleep()
,您将阻止其他海龟事件。如果这最终打算作为 wait 图像,那么您最不想做的就是阻止您正在等待的东西。这真的应该用定时器事件来完成:
from turtle import Screen, Turtle
def walk():
screen.onkeypress(None, "w") # disable handler in handler
def stop_walk():
zelda.shape("image_2.gif")
screen.onkeypress(walk, "w") # restore event handler
zelda.shape("image_1.gif")
screen.ontimer(stop_walk, 200) # in the future, in milliseconds
screen = Screen()
# Registers Gifs
screen.register_shape("image_1.gif")
screen.register_shape("image_2.gif")
zelda = Turtle()
zelda.penup()
screen.onkeypress(walk, "w")
screen.listen()
screen.mainloop()
这将允许其他海龟事件在等待期间继续进行。