【问题标题】:Why is Python waiting, if it is not supposed to be?如果不应该等待,为什么 Python 会等待?
【发布时间】:2020-01-23 12:12:26
【问题描述】:

我用 Python 3 和 PyGame 制作了一个游戏。现在我想添加一个新的暴民,效果很好,除了一件事:

我想给暴徒一个动画,由图片组成,那个开关。
你看到他们切换我导入了time 并做了这个:

def walk(self):
    self.img_1
    time.sleep(0.2)
    self.img_2
    time.sleep(0.2)

def update(self):
    # stuff
    self.walk()

当我运行它时,Python 等待并挂断。但我不想让它等待。我只是希望它在切换图片之间等待。

【问题讨论】:

  • 我不明白你的问题。它正在等待,因为你告诉它等待。
  • self.img_1 应该做什么?
  • 我希望它在切换图像之间等待。 (它不会在几毫秒内通过它)。不等待开始洞比赛。我在另一个文件中定义了 self._img1 ...,它只是加载图像。

标签: python python-3.x visual-studio-code pygame


【解决方案1】:

time.sleep() 暂停任何线程运行它,因此在等待完成之前不会执行其他代码。

您要做的是存储有关动画状态的信息,并通过调用time.time() 或类似的方法来更改它,以测量已经过去了多少时间并据此更新图片。

【讨论】:

  • 如果我使用 time.time(),我如何告诉 python,等待多长时间。如果我这样做: time.time(0.2) 我得到一个 TypeError。谢谢
  • time.time() 不能那样工作。它轮询系统时钟并返回以浮点数表示的当前时间。您会看到您的程序很可能是按顺序运行的单个执行线程。因此,如果您的程序处于睡眠状态,则在睡眠完成之前它绝对不会执行任何操作。否则它会运行一个活动循环,这会导致您的更新功能每隔一段时间运行一次。因此,当您进行更新时,您需要计算自上次更新以来经过的时间量,并使用它来确定要绘制的正确图片。
  • 扩展得很好。谢谢。我如何通过计算来做到这一点?我不能只在我的图像之间写入 time.time(),因为它会以毫秒为单位运行,而我什么也看不到。
  • 我没有足够的字符在评论中完全解释。有多种方法可以做到这一点,但您需要将当前时间存储在一个变量中,然后计算每次调用更新调用之间的时间变化。另一种选择是计算更新周期需要多长时间,然后休眠一段时间,使每次更新的时间都一样长(但睡眠时间真的很短,比如 1/60 秒。)看看这些链接: riptutorial.com/pygame/topic/3959/getting-started-with-pygamedr0id.bitbucket.io/legacy/pygame_tutorial04.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2022-01-21
  • 2021-05-29
  • 1970-01-01
相关资源
最近更新 更多