Pygame音乐队列不工作
我今天一直在尝试弄明白这个问题,但一直没成功:如何在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()