为什么 pygame 在函数内部不起作用?
Why pygame doesn't work inside functions?
我已经添加了一个 wav 文件以在某些实例上播放,但是当我将代码放在一个函数中并在其他地方调用时它不起作用。当我改变缩进时。我试过 mp3 但同样的问题发生了。
这段代码可以正常工作:
pygame.mixer.init()
pygame.mixer.music.load("../audio/Humi.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
此代码无效:
def func():
pygame.mixer.init()
pygame.mixer.music.load("../audio/Humi.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
这是我收到的错误消息:
File "D:\GitANN.py", line 34, in Predicions
pygame.mixer.music.load("../audio/Humi.wav")
pygame.error: Couldn't open '../audi/Humi.wav'
抱歉,我在评论中建议您执行的获取音频文件绝对路径的操作无效。我错过了一个事实,即您在 .wav 文件的相对路径上有一个两点 ..
前缀。
但是,这个想法的核心——获取并使用音频文件的绝对路径——仍然可行。它只需要做一些不同的事情(实际上更容易一些)。
这在我测试时有效(wave 文件的路径是否被函数内部的 pygame.mixer.music.load()
调用使用)。
注意:与其像所示那样在函数中引用全局变量,不如向函数添加路径参数并将字符串作为参数传递给它会更好。在函数外部只调用一次 pygame.mixer.init()
可能会更好,而不是每次都调用它。
import os
import pygame
def func():
pygame.mixer.init()
pygame.mixer.music.load(wavpath) # Uses global variable.
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
pass
wavpath = os.path.abspath('../audio/Humi.wav')
func()
我已经添加了一个 wav 文件以在某些实例上播放,但是当我将代码放在一个函数中并在其他地方调用时它不起作用。当我改变缩进时。我试过 mp3 但同样的问题发生了。
这段代码可以正常工作:
pygame.mixer.init()
pygame.mixer.music.load("../audio/Humi.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
此代码无效:
def func():
pygame.mixer.init()
pygame.mixer.music.load("../audio/Humi.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
这是我收到的错误消息:
File "D:\GitANN.py", line 34, in Predicions
pygame.mixer.music.load("../audio/Humi.wav")
pygame.error: Couldn't open '../audi/Humi.wav'
抱歉,我在评论中建议您执行的获取音频文件绝对路径的操作无效。我错过了一个事实,即您在 .wav 文件的相对路径上有一个两点 ..
前缀。
但是,这个想法的核心——获取并使用音频文件的绝对路径——仍然可行。它只需要做一些不同的事情(实际上更容易一些)。
这在我测试时有效(wave 文件的路径是否被函数内部的 pygame.mixer.music.load()
调用使用)。
注意:与其像所示那样在函数中引用全局变量,不如向函数添加路径参数并将字符串作为参数传递给它会更好。在函数外部只调用一次 pygame.mixer.init()
可能会更好,而不是每次都调用它。
import os
import pygame
def func():
pygame.mixer.init()
pygame.mixer.music.load(wavpath) # Uses global variable.
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
pass
wavpath = os.path.abspath('../audio/Humi.wav')
func()