Python pygame中音频文件播放的疑难解答

Python pygame中音频文件播放的疑难解答,python,pygame,Python,Pygame,我在pygame中遇到崩溃,无法播放音频文件。我在尝试触发音频文件时遇到此错误:RESTART:/Users/matthewmacy/Desktop/WORKING platfupdate PROJECT\u help/main.py 自我追踪!!!4在我的代码中,我生成了一个介于1和5之间的随机数(self.tracks=random.randint(1,5)),它被认为决定了随机播放的曲目。我可以成功地为初始启动屏幕播放曲目,但随后的游戏音乐无法播放。我想一个潜在的问题可能是,当我打开游戏音

我在pygame中遇到崩溃,无法播放音频文件。我在尝试触发音频文件时遇到此错误:RESTART:/Users/matthewmacy/Desktop/WORKING platfupdate PROJECT\u help/main.py 自我追踪!!!4在我的代码中,我生成了一个介于1和5之间的随机数(self.tracks=random.randint(1,5)),它被认为决定了随机播放的曲目。我可以成功地为初始启动屏幕播放曲目,但随后的游戏音乐无法播放。我想一个潜在的问题可能是,当我打开游戏音频时,我正在切断启动屏幕音频。我认为有一个计时器在5秒后开始播放音乐,这将在音频开始/停止之间留出足够的时间。如果有人知道这个问题的解决方法,请告诉我

 def show_start_screen(self):
    # game splash/start screen

    pg.mixer.music.load('beautiful_reverb.wav')
    pg.mixer.music.play(-1)

    bg = pg.image.load("1366X768EDITEDflag.png")
    self.screen.blit(bg,(0,0))


    pg.display.flip()
    self.wait_for_key()

    #Go to controls Screen and cut music when clicked
    controls = pg.image.load("1366X768ControlsFINAL.png")
    self.screen.blit(controls,(0,0))
    pg.display.flip()
    self.wait_for_key()
    pg.mixer.music.stop()


    self.PlayMusic()


def PlayMusic(self):

    now = pg.time.get_ticks()
    if now - self.last_update3 > 5000:
        self.last_update3 = now
        self.tracks = random.randint(1,5)
        print("SELFTRACKS!!!", self.tracks)
        if self.tracks == 1:
            pg.mixer.music.load('1GOODPARTS1.wav')
            pg.mixer.music.play(-1)
        if self.tracks == 2:
            pg.mixer.music.load('2FminorScale.wav')
            pg.mixer.music.play(-1)
        if self.tracks == 3:
            pg.mixer.music.load('3GOODfunnyTRumpdance3.wav')
            pg.mixer.music.play(-1)
        if self.tracks == 4:
            pg.mixer.music.load('4GOODfunnyTrumpdance4.wav')
            pg.mixer.music.play(-1)
        if self.tracks == 5:
            pg.mixer.music.load('5OLDschoolVideogame.wav')
            pg.mixer.music.play(-1)
这里有一个简单的例子。尤其是“当一首歌结束时做点什么”这一段对你来说很有趣。定义事件类型,调用
pg.mixer.music.set\u endevent(SONG\u END)
,然后在事件循环中检查此事件是否在事件队列中,选择一首随机歌曲并播放它

import sys
import random
import pygame as pg


pg.mixer.pre_init(44100, -16, 2, 2048)
pg.init()
screen = pg.display.set_mode((640, 480))

SONGS = ['song1.wav', 'song2.wav', 'song3.wav']
# Here we create a custom event type (it's just an int).
SONG_END = pg.USEREVENT + 1
# When a song is finished, pygame will add the
# SONG_END event to the event queue.
pg.mixer.music.set_endevent(SONG_END)
# Load and play the first song.
pg.mixer.music.load('song1.wav')
pg.mixer.music.play(0)


def main():
    clock = pg.time.Clock()
    done = False

    while not done:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                done = True
            # If the SONG_END event gets emitted, just
            # pick a random song and play it.
            if event.type == SONG_END:
                print('The song ended. Playing random song.')
                pg.mixer.music.load(random.choice(SONGS))
                pg.mixer.music.play(0)

        screen.fill((30, 60, 80))
        pg.display.flip()
        clock.tick(30)


if __name__ == '__main__':
    main()
    pg.quit()
    sys.exit()

这个答案只是展示了一个更好的选择随机歌曲并切换它们的方法。我不知道为什么游戏会在没有更多上下文的情况下崩溃。我已经可以说的一件事是,如果用户在5秒钟之前单击,那么
if now-self.last_update3>5000:
检查会阻止选择和播放新曲目。当我在上面的教程中使用我的音频时,我仍然会崩溃。我不知道是什么问题!我卸下计时器,我仍然会崩溃!我的音频不是特别长,所以我不知道问题出在哪里。我还有你几天前寄给我的完整项目。它对我来说工作正常(在删除计时器之后),因此您可能在其他地方引入了错误。请发布完整的回溯。