import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
Run Code Online (Sandbox Code Playgroud)
这输出"处理完成退出代码0",但它不播放任何内容.我该如何解决这个问题?
小智 20
播放功能启动音乐播放,但立即返回.然后你的程序到达它结束,pygame对象被自动销毁,导致音乐停止.
正如您所评论的那样,如果您在退出之前等待它,它会播放音乐 - 因为在while循环结束之前,pygame对象不会被销毁.
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
Run Code Online (Sandbox Code Playgroud)
Cin*_*der 13
音乐停止是因为它是一个异步事件,这意味着它将继续使用脚本.然后,脚本立即停止,而不是让音乐有机会开始.如前所述,你可以使用
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
Run Code Online (Sandbox Code Playgroud)
然而,更好的是pygame.event.wait(),因为它将等待所有异步事件结束.
这是一个超级简单的方法。
import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
pygame.event.wait()
Run Code Online (Sandbox Code Playgroud)
小智 6
我从thepythongamebook.com找到了一个很好的解决方案:
pygame.mixer.pre_init(44100, -16, 2, 2048) # setup mixer to avoid sound lag
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load('music_01.mp3')
pygame.mixer.music.play(-1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53320 次 |
| 最近记录: |