2016-04-26 36 views
0

我用pygame寫了一個音樂播放器,我想播放一個曲目列表,但是我必須編寫一個循環播放來監視播放狀態,但這樣CPU使用率超過了100%,有時沒有響應,我如何修改我的代碼當我用pygame編寫音樂播放器時,我必須編寫一個循環來監視播放狀態?

while 1: 
     if pygame.mixer.music.get_busy()!=1: 
      listNumber+=1 
      player(listNumber) #tell player program go to next song 
     for event in pygame.event.get(): 
      if event.type==pygame.QUIT: 
       sys.exit() 

回答

1

使用pygame.mixer.music.set_endevent(music_stop_event)然後檢查事件循環中是否有該事件。

music_stop_event = pygame.USEREVENT + 1 

(和在事件循環)

events = pygame.event.get() 

    for event in events: 
     if event.type == pygame.QUIT: 
      sys.exit() 

     if event.type == music_stop_event: 
      # do something 
+0

我必須寫這樣的代碼 '事件= pygame.event.get() 用於事件的事件: 如果event.type == SONG_END: itemlistNumber + = 1個 nextsong(itemlistNumber) 而1: 如果event.type == pygame.QUIT: sys.exit()'
但不'事件= pygame.event.get() 對事件的事件:如果 == event.type pygame.QUIT: sys.exit() 如果event.type == music_stop_event: #做something'
或者不玩,但如果我寫的' while1'很快就沒有迴應 – FindViewById

+0

對不起,我是這個新的stackoverflow,我現在不能使用它的代碼格式表單 – FindViewById