python - 如何在图片之间添加等待
问题描述
在按下“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()
函数中使用布尔语句保存它以前所处的状态来创建布尔语句,那会很好用。
解决方案
我觉得您的解决方案和@Prune 的解决方案都考虑不周。通过使用time.sleep()
,您正在阻止其他海龟事件。如果这最终打算用作等待图像,那么您要做的最后一件事就是阻止您正在等待的东西。这实际上应该通过计时器事件来完成:
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()
这将允许其他海龟事件在等待期间继续。
推荐阅读
- node.js - I keep getting "Unexpected end of JSON input"
- c# - How to read the custom configuration settings in c#?
- vb.net - 如何使用 devexpress 根据某些列值更改行颜色?
- php - PHP string replace not working as expected
- c - Eclipse c 格式化程序 | 在函数头中保留 arg-type 和 arg-name 之间的空格
- php - 在字符串中查找并替换
- vhdl - VHDL:按钮去抖动(或不去抖动,视情况而定)
- java - Wildfly 是否提供凭据引用功能以在standalone.xml 中使用掩码密码?
- clojure - ^:internal 在clojure中是什么意思?
- android - 根据 Googe Play 商店在应用程序中正确的主机名验证器