【问题标题】:How to wait for a particular time interval for an event in pygame?如何在pygame中等待事件的特定时间间隔?
【发布时间】:2016-06-26 09:34:14
【问题描述】:

这是一个基本的pygame代码-

import pygame

screen = pygame.display.set_mode((800,600))

try:
    while True:
        e = pygame.event.wait()
        if e.type == pygame.QUIT:
            raise StopIteration
        if e.type == pygame.MOUSEBUTTONDOWN:

        if e.type == pygame.MOUSEBUTTONUP:

        if e.type == pygame.MOUSEMOTION:


except StopIteration:
    pass

pygame.quit()

我想要做的是,当用户离开鼠标按钮并触发 MOUSEBUTTONUP 事件时,我想等待一段时间以检查是否有任何 MOUSEBUTTONDOWN 事件,然后再执行 MOUSEBUTTONUP 块中的命令。

基本上我想在触发 MOUSEBUTTONUP 事件后等待 2 秒钟,如果在此期间没有 MOUSEBUTTONDOWN 事件,我将继续执行 MOUSEBUTTONUP 中的命令。但是,如果在这 2 秒内发生 MOUSEBUTTONDOWN 事件,我将执行 MOUSEBUTTONDOWN 中的命令。

欢迎任何关于如何实现此行为的想法。

谢谢

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    您可以使用sleep()

    例如:

    import time
    time.sleep(5)
    

    Link

    【讨论】:

    • 在睡眠中,我必须给出一个固定的时间间隔,在此期间 pygame 不会检测到任何事件。如果用户在 2 秒暂停期间单击鼠标,我希望程序立即开始执行。
    【解决方案2】:

    您可以尝试使用time 模块的time.time() 方法。它返回参考纪元的当前时间,如提到的here

    time.time()

    以浮点数的形式返回自纪元以来的时间(以秒为单位)。请注意,尽管时间始终以浮点数形式返回,但并非所有系统都提供比 1 秒更好的精度的时间。虽然此函数通常返回非递减值,但如果系统时钟已在两次调用之间调回,则它可以返回比前一次调用更低的值。

    要等待用户指定的时间,下面的代码应该可以正常工作:

    import time
    
    max_time = int(raw_input('Enter the amount of seconds you want to run this: '))
    start_time = time.time()  # remember when we started
    while (time.time() - start_time) < max_time:
        do_stuff()
    

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 2021-05-08
      相关资源
      最近更新 更多