SoundManager2在Android上同时播放多个声音

SoundManager2 Playing Multiple Sounds at once on Android

本文关键字:播放 声音 Android SoundManager2      更新时间:2023-09-26

如果你在soundmanager2中有两个声音通常你可以同时播放,在android和其他手机上调用播放一个声音将停止所有其他声音。

soundManager.setup({
    preferFlash: false,
    //, url: "swf/"
    onready: function () {
        soundManager.createSound({
            url: [
                "http://www.html5rocks.com/en/tutorials/audio/quick/test.mp3", "http://www.html5rocks.com/en/tutorials/audio/quick/test.ogg"
            ],
            id: "music"
        });
        soundManager.createSound({
            url: [
                "http://www.w3schools.com/html/horse.mp3", "http://www.w3schools.com/html/horse.ogg"
            ],
            id: "horse"
        });
    }
}).beginDelayedInit();
$("#horse").click(function () {
    soundManager.play("horse"); // <- stops other sounds on mobile :(
});
$("#music").click(function() {
    soundManager.play("music"); // <- stops other sounds on mobile :(
});

http://jsbin.com/hopapagefa/1/edit?html、js、输出

有一些方法我可以在android上运行多个声音?如果没有,我是否可以检测到这种一次只运行一个声音的能力?

推理:我想在游戏中有恒定的背景音乐,当某些事情发生时播放声音,理想情况下不停止背景音乐

我没有找到在android上运行多个声音的方法,但我所做的是检测声音是否被此限制所阻止,并在声音完成播放后重新启动它们,例如

var isPlaying = function (name) {
    return soundManager.getSoundById(name).playState == 1;
};
// we want to play horse music over our background music
var oldPosition = soundManager.getSoundById('music').position;
soundManager.play("horse", {
    onfinish: function() {
        if(!isPlaying('music')) { 
            // mobile devices must have cut the background music off :(
            // should probably check if its still appropriate to replay the background music
            soundManager.play("music", {
                position: oldPosition
            });
        }
    }
});