2017-02-05 2 views
0

Я хочу сделать с pygame те же функции, что и плейер: play, pause, queueing нормально. Но как делать предыдущие/следующие кнопки?Pygame: заставить играть следующую песню в очереди, даже если фактическая песня еще не закончена? (aka «Next»)

Как я могу с Pygame, заставить игру следующей песни, которая была очередями (и передать Онг, который на самом деле играет?)

+0

Вы должны включить то, что вы уже пробовали, что не работает, и что вы ожидаете, что делать. Pygame имеет функцию [queue] (http://www.pygame.org/docs/ref/music.html#pygame.mixer.music.queue), но она воспроизводит только следующую песню, если она заканчивается естественным образом. Таким образом, вы сами реализуете систему очередей, если хотите, чтобы вы могли переключать песни в середине одного (или предыдущего). Это не сложно реализовать (это в основном список, загрузка из списка и отслеживание индекса в списке), но вы должны показать, что вы пробовали в первую очередь. –

+0

Вы читали документацию PyGame? то есть. [pygame.mixer.music] (http://pygame.org/docs/ref/music.html) – furas

+0

Чтобы продлить: нам нужно знать ваши текущие знания о проблеме, чтобы дать ответ, который не проходит фундаментальная семантика python/pygame (которая является пустой тратой вашего и нашего времени), а не ответ, который слишком сложно понять. Если вы попробуете простую попытку, мы сможем быстро понять, что означает ваша отправная точка и предоставить помощь. Возможно, ссылки на документацию достаточны или объясняют, как загружать песни из списка и т. Д. Это будет сузить вопрос и сделать его менее широким и более ответственным. Это также покажет нам, что вы просто не хотите код, но на самом деле учитесь. –

ответ

0

Есть список названий песен, и отслеживать, где вы находятся в списке с переменной. Используете ли вы pygame.mixer.music или pygame.mixer.Sound, когда нажата кнопка «Далее», просто измените переменную на единицу, а затем остановите песню, а песня - вместо нее.

Пример кода для pygame.mixer.Sound:

#setup pygame above this 
#load sounds 
sound1 = pygame.mixer.Sound("soundone.ogg") 
sound2 = pygame.mixer.Sound("soundtwo.ogg") 

queue = [sound1, sound2] #note that the list holds the sounds, not strings 
var = 0 

sound1.play() 

while 1: 
    if next(): #whatever the next button trigger is 
     queue[var].stop() # stop current song 
     if var == len(queue - 1): # if it's the last song 
      var = 0 # set the var to represent the first song 
     else: 
      var += 1 # else, next song 
     queue[var].play() # play the song var corresponds to 
+0

Извините, я видел это прямо сейчас. Большое вам спасибо. –

+0

@ BénédicteLagouge Это прекрасно, я рад, что смогу помочь! Расскажи мне, как это происходит. – Cole128

Смежные вопросы