Pygame音乐队列无法正常运行

时间:2014-08-13 03:49:27

标签: python pygame

我一直在试图弄清楚这一天没有成功: 如何在pygame中设置歌曲播放列表? queue命令似乎对我不起作用。所有这一切都是我加载的第一首歌将一直播放,然后第二首歌将无法启动。 pygame文档说这就是我所需要的。我犯了一个明显的错误吗?

import pygame
pygame.init()
pygame.mixer.init

screen=pygame.display.set_mode((800,450))
pygame.mixer.music.load('mimages\\sounds\\droll.wav')

pygame.mixer.music.play(0,0.0)
pygame.mixer.music.queue('mimages\\sounds\\hip2014.wav')


running=True
clock=pygame.time.Clock()
while running:
    clock.tick(2)
    for event in pygame.event.get():
            if event.type==pygame.QUIT:
                running=False
                holdon=False
            if event.type==pygame.KEYDOWN and event.key==pygame.K_ESCAPE:
                running=False
                holdon=False
    print pygame.mixer.music.get_busy()

2 个答案:

答案 0 :(得分:1)

Pygame模块中的queue()函数无法正常工作。

我创建了一个没有queue()函数的函数。

我不知道为什么它不起作用。 :)

但幸运的是,有一个有效的代码。

尝试:

import pygame
import time
from tkinter import *

root = Tk()
c = ["music1.mp3","music2.mp3","music3.mp3"] #you_can_add_more
x= 0

def music():
    pygame.init()
    pygame.mixer.init()
    pygame.mixer.music.load(c[x])
    pygame.mixer.music.play(0)
    que()

def que():
    global x, c
    pos = pygame.mixer.music.get_pos()
    if int(pos) == -1:
        x += 1
        pygame.mixer.music.load(c[x])
        pygame.mixer.music.play(0)

    root.after(1, que)

music()

root.mainloop()

答案 1 :(得分:0)

请改为尝试:

pygame.mixer.music.load('mimages\\sounds\\droll.wav')
pygame.mixer.music.queue('mimages\\sounds\\hip2014.wav')
pygame.mixer.music.play()

这允许您建立队列,然后立即播放所有队列。如果您想稍后播放不同的文件,请尝试运行pygame.mixer.music.stop()(如果队列尚未完成),然后使用load()(可选地后跟一个或多个queue()语句),然后{{} 1}}再次。