2017-08-10 131 views
1

我想在用戶點擊鼠標左鍵3秒後顯示圖像。 這裏是我的代碼的一部分:如何在一段時間間隔後顯示圖像?

pic=pygame.image.load('pic.png') 
while True: 
    for event.type==pygame.MOUSEBUTTONDOWN: 
    screen.blit(pic,(100,100)) 

它只顯示了一下。我嘗試使用forwhile循環,然而,它結束了幾秒鐘,然後顯示一個閃光燈。

我想我也許可以用一個定時器,加三分,就像這樣:

for event.type==pygame.MOUSEBUTTONDOWN: 
    #get now time here,and assignment for timeclick 
if timeclick+3s>=timenow: # pseudocode 
    screen.blit(pic,(100,100)) 

我怎麼能寫這樣的代碼段?有更好的方法嗎?

回答

1

當用戶單擊鼠標按鈕時啓動計時器,然後計算主循環中的傳遞時間,如果它是>= 3,請將圖像曝光。

import pygame as pg 


def main(): 
    screen = pg.display.set_mode((640, 480)) 
    clock = pg.time.Clock() 
    font = pg.font.Font(None, 40) 
    img = pg.Surface((100, 100)) 
    img.fill((190, 140, 50)) 
    click_time = 0 
    passed_time = 0 

    done = False 

    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 
      # Start the timer. 
      elif event.type == pg.MOUSEBUTTONDOWN: 
       click_time = pg.time.get_ticks() 

     screen.fill((30, 30, 30)) 
     if click_time != 0: # If timer has been started. 
      # Calculate the passed time since the click. 
      passed_time = (pg.time.get_ticks()-click_time)/1000 

     # If 3 seconds have passed, blit the image. 
     if passed_time >= 3: 
      screen.blit(img, (50, 70)) 

     txt = font.render(str(passed_time), True, (80, 150, 200)) 
     screen.blit(txt, (50, 20)) 

     pg.display.flip() 
     clock.tick(30) 


if __name__ == '__main__': 
    pg.init() 
    main() 
    pg.quit() 
+0

首先謝謝你。但是爲什麼很多人在最後加入sys.exit()?我只使用pygame.quit()。也許它們是相同的。 – Inteyerry

+0

我想我曾經讀過一些關閉pygame窗口的系統可能很麻煩,而'sys.exit'可以幫助,但找不到源代碼。也許這是過去不再需要的遺留物。我需要調查。 – skrx

+0

感謝您的支持!你也可以[接受答案](https://meta.stackexchange.com/a/5235)給你2個聲望點和15個響應者,但你不必這樣做。 – skrx

相關問題