0

選択した音楽ファイル ディレクトリから生成されたリストから ogg サウンド ファイルを再生しています。なぜか1曲目を飛ばして2曲目から再生。何らかの理由で、最初の曲の一瞬が時々再生されるため、ループ内のリストから曲をキューに入れようとしている方法に問題があると思われますが、修正できないようです.

import pygame
import sys
import os
from pygame.locals import * 
surface = pygame.display.set_mode((640, 480))
musicDir = "/Users/user/Desktop/Dat Sound/Music/"
x = os.listdir(musicDir)
del(x[0]) # Deleting first element because it's DS Store file (Mac)
print x # The list is ['Bonfire.ogg', 'Voodoo Child.ogg']
n = ''
count = 1
pygame.mixer.init()
for i in range(len(x)):
    n = musicDir + str(x[i])
    print n  
    pygame.mixer.music.load(n)
    pygame.mixer.music.play()
    pygame.mixer.music.queue(musicDir + str(x[i]))
    # I'm queueing the next song in the list of songs from the folder + its location
    print pygame.mixer.music.get_busy() 
    # get_busy returns true for both files but only the second is playing
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
          running = False
4

1 に答える 1

1

曲をロードして再生してからキューに入れているように見えますが、ループの次の繰り返しで2番目の曲をロードして再生し、再びキューに入れています...

n = musicDir + str(x[i])
pygame.mixer.music.load(n) # so you load the song...
pygame.mixer.music.play()  # then you play it....
pygame.mixer.music.queue(musicDir + str(x[i])) # i hasn't changed, this is the same song 
                                               #  you just loaded and started playing

次に、forループは次の反復に進み、まったく同じことを行いますが、次の曲を使用します。

次のようなことを試してください:

n = musicDir + str[0]   # let's load and play the first song
pygame.mixer.music.load(n)
pygame.mixer.music.play()
for song in x: 
    pygame.mixer.music.queue(musicDir + str(song)) # loop over and queue the rest
于 2013-06-05T17:29:50.967 に答える