所以,首先,我的总体目标是根据玩家在地图上的位置播放不同的背景音乐。我希望一个音轨淡出,另一个音乐在玩家到达某个点时淡入。
以下是我的问题:
我在Fade Between Two Music Tracks in-progress in Pygame的帮助下创建了一个“推子”类。这允许我淡入淡出轨道,但它没有指定如何调整代码以使用pygame.mixer.music而不是pygame.mixer.Sound。
如果我将两首曲目作为声音播放,则在不同的频道上,该节目会慢慢降低 - 使其无法使用。研究表明,这是因为音乐一次播放一次,而声音一次性加载然后播放 - 这显然需要相当多的处理能力。
然而,我似乎无法将它们当作音乐播放 - 而在这里我们来到了问题的核心。这是我的Fader课程,用于播放音乐作为声音:
class Fader(object):
def __init__(self, filename):
self.sound = pygame.mixer.Sound(filename)
# the speed at which it will fade
self.increment = 0.5
# the volume to which it will fade
self.next_vol = 1
def fade_to(self, new_vol):
self.next_vol = new_vol
curr_volume = self.get_volume()
if self.next_vol > curr_volume:
self.set_volume(curr_volume + self.increment)
elif self.next_vol < curr_volume:
self.sound.set_volume(curr_volume - self.increment)
由于上述原因,这不起作用。但是,我不能为我的生活实现与音乐相同的效果。编写音乐作为音乐的代码是相同的,除了第3行,现在是:
self.sound = pygame.mixer.music(filename)
然后我收到一条错误消息“pygame.mixer.music不可调用”。我明白这意味着我不是用那条线创建一个对象,所以我尝试了:
self.sound = pygame.mixer.music.load(filename)
...据我所知,这是创建Music对象的行。但是,当我尝试播放曲目时,我得到“NoneType对象没有属性'play'”。
我似乎无法弄清楚这一点,没有其他人似乎有这个问题,而且 - 去图 - pygame网站已关闭,所以我无法查看文档。
答案 0 :(得分:0)
根据https://www.pygame.org/docs/ref/music.html#pygame.mixer.music.load
上的文件pygame.mixer.music.load(filename)函数将音乐流加载到混音器中,并返回None
所以播放声音,替换
self.sound = pygame.mixer.music.load(filename)
pygame.mixer.music.load(filename)
后跟pygame.mixer.music.play(filename)