首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合音乐(多首音乐曲目)

混合音乐(多首音乐曲目)
EN

Stack Overflow用户
提问于 2021-08-22 20:16:29
回答 1查看 157关注 0票数 0

我有一个相当简单的问题,但令人惊讶的是没有找到一个重复。

我有两个音乐轨道为我的游戏,并希望切换从第一个音乐到其他东西之前,它是自然运行的。

代码语言:javascript
复制
mixer.music.load('music.mp3')
mixer.music.queue("music_phase2.mp3")
mixer.music.play(1, 0.0, 3000)

通常情况下,我可以使用music.queue去下一首音乐曲目。但我希望第一音乐停止后,一个特定的事件(如计时器或计数器),并立即启动下一个轨道。

我想到了这样的事情,但它不起作用。(我需要提到的是,在我的程序中,我希望在while循环内加载音乐,所以可能会导致问题。)这部分代码处理音乐。第一首音乐停止,因为它应该在对手达到10。但第二音乐没有开始播放(只是沉默)。

代码语言:javascript
复制
from pygame import mixer
pygame.mixer.init()

running = True

mixer.music.load('music.mp3')
mixer.music.play(1, 0.0, 3000)

# main loop
while running:
    if logic.counter > 10:
        mixer.music.stop()
        mixer.music.unload()
        mixer.music.load('music_phase2.mp3')
        mixer.music.play(1, 0.0, 3000)


#code doesnt end here but the rest shouldnt influence the music
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-23 05:19:28

我发现了你的错误。你所做的是:

代码语言:javascript
复制
while running:
    if logic.counter > 10:
        mixer.music.stop()
        mixer.music.unload()
        mixer.music.load('music_phase2.mp3')
        mixer.music.play(1, 0.0, 3000)

问题是,logic.counter不断增加!在代码中,我没有看到任何可以阻止logic.counter增长的标志或东西!

这意味着一旦logic.counter达到11,它就进入if块。无论如何,它将进入if时,它是12,并重新加载音乐。一次又一次。永远不变。您需要将其更改为:

代码语言:javascript
复制
    if logic.counter == 10:

因此,它将卸载第一首音乐和加载第二音乐只有一次。

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

https://stackoverflow.com/questions/68884848

复制
相关文章

相似问题

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