SoundJS——通过在 IE 中不工作的实例播放的声音
SoundJS -- sounds played via instances not working in IE
我 运行 发现使用 SoundJS 的浏览器之间存在一些不一致的行为,即 IE11 对从抽象声音实例播放很吝啬。
以下代码适用于我测试过的所有其他浏览器,但不适用于 IE11:
<html>
<head>
<script src="https://code.createjs.com/soundjs-0.6.1.min.js"></script>
<script>
var sounds = {}
function loadSounds() {
createjs.Sound.registerSound('audio/song.mp3', 'song', 1);
songInst = createjs.Sound.createInstance('song');
sounds['song'] = songInst;
}
function startSound(id,v,l){
sounds[id].play({loop:((l===true)?-1:0),volume:v});
}
</script>
</head>
<body onload="loadSounds()">
<button value="StartSound" onclick="startSound('song',1,true)">startSound</button>
</body>
</html>
通过将 startSound() 函数更改为此,我能够在 IE11 中播放声音:
function startSound(id,v,l){
createjs.Sound.play(id,{loop:((l===true)?-1:0),volume:v});
}
但这给我的其余实现带来了问题,因为每个声音都需要一个唯一可识别的实例,我可以调用它来实现音量补间等功能。
是否有任何我遗漏的东西可以让第一种方法起作用?
很好,HTMLAudioPlugin 和 AbstractPlugin 代码中存在错误,如果您在加载 src 之前创建实例,则持续时间设置不正确。在播放调用中,根据持续时间检查位置,当持续时间为 NaN 时检查失败。
要解决此问题,您需要在创建实例之前加载音频。
createjs.Sound.addEventListener("fileload", createSound);
createjs.Sound.registerSound("audio/song.mp3", "song", 1);
function createSound(event) {
songInst = createjs.Sound.createInstance("song");
// this could also use event.src
sounds['song'] = songInst;
}
显然我们也会在未来的版本中修复该错误。希望对您有所帮助。
我 运行 发现使用 SoundJS 的浏览器之间存在一些不一致的行为,即 IE11 对从抽象声音实例播放很吝啬。
以下代码适用于我测试过的所有其他浏览器,但不适用于 IE11:
<html>
<head>
<script src="https://code.createjs.com/soundjs-0.6.1.min.js"></script>
<script>
var sounds = {}
function loadSounds() {
createjs.Sound.registerSound('audio/song.mp3', 'song', 1);
songInst = createjs.Sound.createInstance('song');
sounds['song'] = songInst;
}
function startSound(id,v,l){
sounds[id].play({loop:((l===true)?-1:0),volume:v});
}
</script>
</head>
<body onload="loadSounds()">
<button value="StartSound" onclick="startSound('song',1,true)">startSound</button>
</body>
</html>
通过将 startSound() 函数更改为此,我能够在 IE11 中播放声音:
function startSound(id,v,l){
createjs.Sound.play(id,{loop:((l===true)?-1:0),volume:v});
}
但这给我的其余实现带来了问题,因为每个声音都需要一个唯一可识别的实例,我可以调用它来实现音量补间等功能。
是否有任何我遗漏的东西可以让第一种方法起作用?
很好,HTMLAudioPlugin 和 AbstractPlugin 代码中存在错误,如果您在加载 src 之前创建实例,则持续时间设置不正确。在播放调用中,根据持续时间检查位置,当持续时间为 NaN 时检查失败。
要解决此问题,您需要在创建实例之前加载音频。
createjs.Sound.addEventListener("fileload", createSound);
createjs.Sound.registerSound("audio/song.mp3", "song", 1);
function createSound(event) {
songInst = createjs.Sound.createInstance("song");
// this could also use event.src
sounds['song'] = songInst;
}
显然我们也会在未来的版本中修复该错误。希望对您有所帮助。