首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pygame和音频问题

Pygame和音频问题
EN

Stack Overflow用户
提问于 2022-07-27 20:07:31
回答 1查看 35关注 0票数 0

我最近一直在开发一款新游戏,我终于完成了这款游戏,我在最后一段时间里添加了一些音乐,但后来我意识到声音质量很差,于是我试着把它做成不同的扩展和wav,mp3不工作,我尝试了OGG,它说它“加载失败了”。我需要帮助,要么修复OGG装载或修复劣质与wav和mp3。我在windows 10上加载音频文件:

代码语言:javascript
运行
复制
intro_mp3 = mixer.Sound("audio/intro.ogg")
choosing_mp3 = mixer.Sound('audio/choosing.ogg')
battle_mp3 = mixer.Sound('audio/battle.ogg')
win_mp3 = mixer.Sound('audio/win.ogg')
lose_mp3 = mixer.Sound('audio/lose.ogg')

在这里,我在if声明之外播放它:

代码语言:javascript
运行
复制
if start_button.draw(screen):
        sleep(0.2)
        game_screen()
        start_button.remove()
        start.fill((0, 0, 0, 0))
        intro = True
        chosen_fighter = True
        bool_appearer = True
        print("START")
        screen.blit(tutorial, (50, 0))
    intro_mp3.play()

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2022-08-01 07:04:48

问题中提供的分析代码很少。

您将声音描述为“一遍又一遍地回响”,这使我相信您的代码正在反复要求pygame.mixer.Sound对象玩()声音,而无需等待声音的完成。也许每次循环执行时,它都会启动新的回放。也许这个设计并没有打算让这种情况发生。

调用.Sound.play()只启动回放,函数不阻塞,它几乎立即返回。

.Sound.play()调用返回正在播放声音的pygame.mixer.Channel对象。您的代码可以调用频道上的.get_busy()成员函数来查看声音是否仍在播放,而不是第二次播放。(虽然get_busy()在播放任何声音时返回true,但不只是特定的声音)。

显然,最好的修复是重新构造代码,所以声音回放只触发一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73144052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档