【问题标题】:Loading and playing music in python在 python 中加载和播放音乐
【发布时间】:2019-04-16 13:08:25
【问题描述】:

所以我正在尝试在 pygame 上播放音乐,到目前为止,我可以成功地在程序上加载和播放音乐,但我可以在没有变量的情况下做到这一点,而且我不确定如何在涉及变量的情况下做到这一点。

我已经尝试将它们存储在变量中并从变量中播放它们。

Menumusic = pygame.mixer.music.load("MainMenu.mp3")
Menumusic.play(-1, 0.0)

我希望音乐能够播放,但我得到的是输出:

Menumusic.play(-1, 0.0)
AttributeError: 'NoneType' object has no attribute 'play'

【问题讨论】:

    标签: python python-3.x pygame


    【解决方案1】:

    根据文档,您应该调用 pygame.mixer.music.play() 来开始播放加载的音乐流。

    【讨论】:

      【解决方案2】:

      从变量播放不是很清楚你的意思,但在我看来你想改变播放的音乐。您不能没有变量Menumusic,因为它包含播放音乐所需的所有功能。

      myvariablemp3 = "MainMenu.mp3"   # Change this to some way of varying the filename 
      Menumusic = pygame.mixer.music.load(myvariablemp3)
      Menumusic.play(-1, 0.0)
      

      【讨论】:

      • 抱歉含糊不清,但那是我尝试使用的结构,但它只是输出“nonetype has no attribute play”
      • 我这样做是为了稍后在代码中当我需要停止播放音乐时,我可以只说“Menumusic.stop()”而不是写出“pygame.mixer。音乐……”
      • 如果你得到AttributeError: 'NoneType' object has no attribute 'play' 那是因为你对pygame.mixer.music.load 的调用失败(可能是文件名或路径的问题?)而不是因为你的代码做错了。如果你做得正确,使用文字字符串调用 load 和使用包含字符串的变量调用 load 没有任何区别。
      • 但是路径或文件名没有任何问题,我不确定为什么会发生这种情况
      • 我仍然说您对pygame.mixer.music.load 的调用失败了,因此关于该调用的某些方面 是错误的。请编辑您的问题以向我们展示 (1) 将文件名分配给变量的代码 (2) 您的代码使用该变量对 pygame.mixer.music.load 进行的调用以及 (3) 完整的错误消息,包括您在代码进行调用。目前,您的问题仅显示了问题的编辑版本,描述了您认为错误的地方,但并未向我们准确展示错误的原因、位置和方式。
      【解决方案3】:

      一般要在变量中保存声音,代码需要使用pygame.mixer.Sound()来加载文件。

      例如:

      drum_beat = pygame.mixer.Sound("bass_drum.wav")
      

      稍后在代码中,可以通过将 result.Sound(...) 调用(在本例中为 drum_beat)传递给 pygame.mixer.Sound.play() 来播放预加载的声音。

      drum_beat = pygame.mixer.Sound("bass_drum.wav")
      ...
      pygame.mixer.Sound.play( drum_beat )
      

      【讨论】:

        猜你喜欢
        • 2018-03-13
        • 1970-01-01
        • 2022-08-21
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        • 2019-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多