使用javascript在移动设备中播放多个音频声音

时间:2016-12-19 11:27:38

标签: javascript android ipad audio mobile

我正在制作一款有不同声音的游戏。

我正在使用以下内容播放

var jackpot_audio_file = document.getElementById('jackpot_sound');
jackpot_audio_file.play();

它完全适用于桌面,但不适用于移动设备。有些人玩,因为我有一个点击然后声音播放,但其余的不需要用户点击任何没有工作。

我尝试使用带触发器的模拟点击('点击')但它也无法正常工作。

1 个答案:

答案 0 :(得分:3)

我知道这是一个老问题,但我遇到了同样的问题并找到了解决方法。

您可能已经意识到,您无法在移动环境中触发声音。要播放,用户需要触摸事件。

所以,我做了以下几点:

1 - 我事先声明了我要播放的所有声音

var sound1 = new Audio('file1.mp3');
var sound2 = new Audio('file1.mp3');
var sound3 = new Audio('file1.mp3');

2 - 我创建了一个带有按钮的屏幕,用户必须点击该按钮才能进入游戏:

<button onclick="proceeed()">proceeed</button>

3 - 声明了一个由此按钮调用的函数,它将所有音频音量设置为零,全部播放,暂停所有音频,然后继续游戏:

function proceed() {
    sound1.volume = 0;
    sound2.volume = 0;
    sound3.volume = 0;

    sound1.play();
    sound1.pause();
    sound2.play();
    sound2.pause();
    sound3.play();
    sound3.pause();

    sound1.volume = 1;
    sound2.volume = 1;
    sound3.volume = 1;

    startGame();
}

这样,所有声音都会通过触摸事件“播放”并加载到内存中。下次在应用程序中播放声音时,只需调用

即可
sound1.play();

即使正在播放其他声音,也会播放声音。

我们仍然不能让它自动播放,但我们可以“欺骗”用户向我们提供我们需要的事件,因此声音可以免费播放。它允许您拥有背景主题并在其上播放声音效果。

您可以在此处查看结果:

http://thechase.besaba.com(在移动设备上打开)。

源代码可在以下网址找到:https://github.com/Vinas/theChase

希望这很有用!