2015-10-04 63 views
0

我想讓按鈕上的圖像旋轉點擊。當我點擊屏幕時圖像旋轉,但它每5度繼續自我複製,並且在運行一段時間後也會崩潰。我確定有更好的方法來做到這一點,但我只是不知道它是什麼。這裏是我的代碼我想讓一個圖像旋轉在一個按鈕上點擊

while True: 
     for event in pygame.event.get(): 
      '''Quit Button''' 
      if event.type == pygame.QUIT: 
       pygame.quit() 
      elif event.type == pygame.MOUSEBUTTONUP and event.button == 1: 
       screen.blit(target, targetpos) 

      elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: 
       # # if mouse is pressed get position of cursor ## 
       screen.blit(target1, target1pos) 
      degree = 0 
      while True: 
       image_surf = pygame.image.load('image.png') 
       image_surf = pygame.transform.scale(image_surf, (810, 810)) 
       image_surfpos = image_surf.get_rect() 
       blittedRect = screen.blit(image_surf, image_surfpos) 
       'Get center of surf for later' 
       oldCenter = blittedRect.center 
       'rotate surf by amount of degrees' 
       rotatedSurf = pygame.transform.rotate(image_surf, degree) 
       'Get the rect of the rotated surf and set its center to the old center' 
       rotRect = rotatedSurf.get_rect() 
       rotRect.center = oldCenter 
       'Change the degree of rotation' 

       screen.blit(rotatedSurf, rotRect) 
       degree += 5 
       if degree > 360: 
        degree = 0 


       'Show the screen Surface' 
       pygame.display.flip() 

       'Wait 60 ms for loop to restart' 
       pygame.time.wait(60) 

回答

1

看起來好像你有一個double while循環,它不會讓你的代碼做事件處理。也不要加載每幀真實的fps殺手的圖像

+0

你如何改變這一點 – Leyton

+0

對不起,遲到的迴應。你在主遊戲循環中的while循環不會退出,所以事件處理不會被處理,從而導致崩潰。由於您沒有在任何一個循環中清除屏幕,所以圖像會在過去的圖像上傳送到屏幕上。我沒有完整的代碼,所以我不能給你一個完整的答案,因爲像target這樣的東西沒有被指定,但是刪除while循環可能會有所幫助。除非有充分的理由在運行時加載它,否則將任何圖像加載到主遊戲循環之外。 – Jarann