为什么Pygame只播放最后一个声音?

时间:2018-12-13 21:11:05

标签: python audio pygame

我得到了以下代码:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    self.window = UIWindow()
    let viewController = UIViewController()
    viewController.view.backgroundColor = .white
    self.window?.rootViewController = viewController
    self.window?.makeKeyAndVisible()
    return true
}

当我想使用以下方式播放声音a_0 = pygame.mixer.sound("a.mp3",) a = pygame.mixer.music b_0 = pygame.mixer.music.load("b.mp3") b = pygame.mixer.music c_0 = pygame.mixer.music.load("c.mp3",) c = pygame.mixer.music d_0 = pygame.mixer.music.load("d.mp3") d = pygame.mixer.music e_0 = pygame.mixer.music.load("e.mp3",) e = pygame.mixer.music 时:

d (that emans d.mp3)

它仅播放列表的最后一个声音,这意味着d.play() 而不是e.mp3。 我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

pygame.music.mixer.load()不返回任何内容。因此,您不能将其分配给变量。它加载到混音器中,并准备播放。 Documentation

您需要具有要播放的歌曲的列表或字典,然后每当要播放一首歌曲时,都需要将其加载到调音台中并播放:

def play_song(name):
    pygame.mixer.music.load(name)
    pygame.mixer.music.set_volume(0.3)  # you can also set the volume
    pygame.mixer.music.play(loops=-1)

这是专门针对mixer.music的。

pygame.mixer.Sound返回一个Sound对象,您可以将其保存以备后用:documentation。因此,您可以将声音目录加载到python列表中。

sounds_list = []
sounds_list.append(pygame.mixer.Sound('gun_fire.wav'))
sounds_list.append(pygame.mixer.Sound('coin_pickup.wav'))
# add more sounds