Pygame音乐队列不工作

3 投票
2 回答
5337 浏览
提问于 2025-04-18 17:06

我今天一直在尝试弄明白这个问题,但一直没成功:如何在pygame中设置一个播放歌曲的播放列表?我用的队列命令似乎不管用。结果就是我加载的第一首歌会一直播放到结束,然后第二首歌就不开始了。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

试试这个方法:

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() 语句),最后再用 play() 来播放。

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()

撰写回答