如何终止python中的延迟?

时间:2018-07-30 08:26:50

标签: python for-loop while-loop pygame delay

我在开发的项目中遇到问题。问题出在程序的工具中,是通过 overRect(...)函数来评估,以延迟鼠标光标位于矩形区域的时间。 (当其为true时返回1 ,否则为 0 ),并且当鼠标光标移出时延迟时间被激活,而当鼠标光标返回到rect区域时延迟时间被中断。 我的问题是,仅当我将鼠标置于矩形区域上的光标上时,延迟才被激活。 有人可以帮我解决这个问题吗?

这是我的主要代码, listAcc是9个大小的列表,与问题无关 listStat是31个大小的列表,与问题无关 auxDelay仅在开始时才需要 g:

while done == False:
  for event in pygame.event.get():       

    #Adjustments
    diagram = pygame.transform.scale(diagram, screen.get_size())  
    w, h = pygame.display.get_surface().get_size()
    mask = pygame.surface.Surface((w, h)).convert_alpha()

    _Loc = (int((838*w)/1338), int((471*h)/755))
    _Size = int(35*w/1338)              

    if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_q):
        done = True  


    if event.type == pygame.KEYDOWN and event.key == pygame.K_a: 
        arrived = 1

screen.blit(diagram, (0, 0))

  if arrived == 1:
    if i<50: i+=1

    mask.fill((120, 120, 120, i))

    pygame.draw.circle(mask, (0,0,0,0), _Loc, _Size)
    pygame.draw.rect(mask, (0,0,0,0), (40, 365, 223, 644))


    #HERE STARTS THE TOOL PROGRAM DESCRIPTED
    for j in range(len(listAcc)):
        if overRect(listAcc[j], xw, yh) == 1:
            showStat(mask, listAcc[j], listStat)
            delay = 0
            auxDelay = 1
        elif auxDelay == 1:
            delay = 1

    screen.blit(mask, (0, 0))

    pygame.display.update()   

   #HERE IS WHERE THE DELAY IS RAN
    if delay == 1 and i == 50:
        for milsec in range(3000): 
            pygame.time.delay(1)  
            for j in range(len(listAcc)):
                if overRect(listAcc[j], xw, yh) == 1: 
                    stop = 1                        
                    break
            if stop == 1:
                stop = 0
                break

对程序和目的的任何疑问都可以询问。 谢谢

0 个答案:

没有答案