如果正在播放音乐,为什么 pg.mixer.music.get_busy() 返回 False

问题描述 投票:0回答:1

我正在为自己制作一个 mp3 音乐播放器。当启用暂停(按下按键)时,一切都很好,但是如果您关闭暂停,它会跳过当前音乐,尽管它不应该这样做。

我已经尝试了很多东西,但我仍然不明白代码有什么问题。如果您能帮助我,我将非常感激。

代码-

import os
import pygame as pg
from random import *

Mlist=[]
Mlist=os.listdir("playlist")
shuffle(Mlist)#getting a music list from a folder "playlist"

pg.init()
size = [800, 600]
screen = pg.display.set_mode(size)
clock = pg.time.Clock()
pause = False
running = True
pos=0
while running:   
    for event in pg.event.get():
        if event.type == pg.QUIT:
            running = False
        if event.type == pg.KEYDOWN:#pause music (key down)
            if pause:
                pg.mixer.music.play(0)
                pause = False
            else:
                pause = True
                pg.mixer.music.pause()
    if Mlist and not(pg.mixer.music.get_busy()) and not(pause):
        song = choice(Mlist)
        Mlist.remove(song)
        pg.mixer.music.load("playlist/"+song)
        pg.mixer.music.play()
    pg.display.flip()
    clock.tick(30)
quit()
python pygame
1个回答
0
投票

取消暂停后,您正在从开始播放音乐= 0

这是该函数的文档

pygame.mixer.music.play()
Start the playback of the music stream
play(loops=0, start=0.0, fade_ms=0) -> None

当您暂停时,您应该捕获歌曲暂停的时间点,然后将其传递给播放函数

即。

          if pause is False:
                unnormalized_position = pygame.mixer.music.get_pos()
                position_music = float(unnormalized_position / 1000)
                pygame.mixer.music.pause()
            else:
                pygame.mixer.music.play(0, position_music)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.