繁体   English   中英

对pygame中播放音频文件进行故障排除

[英]Troubleshooting playing of audio files in pygame

我遇到崩溃,无法在pygame中播放音频文件。 尝试触发音频文件时收到此错误:重新启动:/ Users / matthewmacy / Desktop / WORKING platupdate PROJECT_HELPED / main.py SELFTRACKS! 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_endevent(SONG_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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM