0

我正在为两个玩家相同的设备游戏编写代码。

每当一个玩家按下特定按钮时,我都想要播放声音。我发现的声音持续不到 1 秒。另一个玩家可以按下类似的按钮,它会发出相同的声音。

不幸的是,如果声音已经在播放,按钮不会发出我想要的声音。我试着停下来准备,但它似乎不起作用——可能是因为我做得太快了吗?有一个更好的方法吗?

 if (mpSwap.isPlaying())
{
//Stop it, and restart it
mpSwap.stop();
try
{
mpSwap.prepare();
} 
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
}
catch (IOException e)
{
//TODO Auto-Generated catch block
}               

mpSwap.start();
4

1 回答 1

0

使用SoundPool,而不是媒体播放器。

媒体播放器一次只能播放一种声音。您需要 2 个 MediaPlayers 才能播放 2 种不同的声音。此外,MediaPlayer 在从磁盘加载时在开始播放时会有更高的延迟,而 SoundPool 将资源存储在 RAM 中。

所以,使用 SoundPool。它专为您的问题而设计。

于 2013-08-22T17:15:07.317 回答