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循环不允许这样做
答案 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”)
main.play(-1)
同时为True:
然后你编码`