pygame.mixer.music,只要while循环正在运行,我想播放一首曲目

时间:2018-08-10 23:14:55

标签: python python-3.x pygame

import pygame    
import sys  
import time  
from pygame.locals import *

pygame.init()
pygame.mixer.pre_init(44100, 16, 2, 4096)

#music files variables
eatsound = ("E:\p\code\eat.mp3")
gameoversound = ("E:\p\code\gameovertrimmed.mp3")
main = ('E:\p\code\mainm.mp3')


playsurface = pygame.display.set_mode((720, 480))
pygame.display.set_caption('Snake Game!')

fpscontroller = pygame.time.Clock()

while True: 
    pygame.mixer.music.load(main)
    pygame.mixer.music.play(-1, 0.0)

我想让音轨作为背景音播放,直到循环结束。但是,while循环不允许这样做

3 个答案:

答案 0 :(得分:1)

一旦

  pygame.mixer.music.play(-1, 0.0)

方法被调用,无需在while循环内不断重复调用它

在初始化循环时调用一次,然后在while循环退出时停止

答案 1 :(得分:1)

这是您,我理解您的问题:您希望while循环无限循环,以便您的音乐在后台播放。

您的问题是您在pygame.mixer.music.play()循环的每次迭代中都调用while方法。这不是您想要的。相反,我将此代码移到了while循环之外。当然,如果您在while循环中没有留下任何代码,Python将给您一个错误。

要解决此问题,您可以输入pass关键字,但是应该处理输入,以便关闭窗口。

作为旁注,您不需要在字符串周围放置方括号。您可以像这样定义它们:music = "path\to\file"。我还删除了不必要的import语句,以及用于初始化Clock的代码行,因为不需要它们。

这是固定代码:

import pygame     

pygame.init()
pygame.mixer.pre_init(44100, 16, 2, 4096)

#music files variables
main = 'E:\p\code\mainm.mp3'


playsurface = pygame.display.set_mode((720, 480))
pygame.display.set_caption('Snake Game!')

pygame.mixer.music.load(main)
pygame.mixer.music.play(-1, 0.0)

while True: 
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            pygame.quit()
            quit()

希望此答案对您有所帮助,如果还有其他疑问,请随时在下面发表评论!

答案 2 :(得分:-1)

我用pygame.mixer.Sound()
解决了 这是工作代码
`main = pygame.mixer.Sound(“ E:\ p \ code \ mainmm.wav”)

while循环之前

main.play(-1)

同时为True:
然后你编码`