我有这段代码:
$('#typer').keypress(function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if (code == '13') {
$.sound.play("cr.wav",{timeout:1000});
} else if (code == '8') {
$.sound.play("del.wav",{timeout:1000});
} else if (code == '27') {
$.sound.play("asswipe.wav",{timeout:1000});
} else {
$.sound.play("key.wav",{timeout:1000});
}
});
现在,出于某种原因 - 我只能在此框中输入 一个字符 。声音播放一次,然后再播放。
这在IE中运行良好......只是FireFox ......
插件链接:http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/sound/jquery.sound.js?r=5750
有没有人曾经使用过这个插件....?
答案 0 :(得分:2)
首先,e.which是一个数字,而不是一个字符串,所以你应该丢失单引号:使用code == 13
,而不是code == '13'
。转换语句可能会更好(尽管这只是一个偏好问题)。
其次,我认为问题不在于插件。不使用插件,这有同样的问题:
$('#typer').keypress(function(e) {
var snd = $('<embed hidden="true" loop="false" src="key.wav" autostart="true" height="0" />');
snd.appendTo("body");
setTimeout(function() { snd.remove(); }, 1000);
});
似乎FF和Chrome不能很好地动态添加<embed>
个标签。您可能想要查找不同的插件,一个不使用该标签的插件。我不是flash的粉丝,但可能有一些使用它的插件,而且运行良好。
答案 1 :(得分:0)
也许尝试keydown而不是按键?我在使用按键操作RPG sprite角色移动项目时遇到了很多问题,其中数字与预期的键不匹配,完全放弃了它而支持keydown。
如果这不起作用,我可以考虑复制你的环境。
修改强> 这对我来说似乎很有用(Chrome&amp; Firefox 3.6): http://resopollution.com/experiments/sound/sound.html
我注意到该页面只是打开了音频文件(似乎有些错误),但无法复制它。也许这就是你所经历的......现在我的工作正常。
如果您仍然遇到问题......
备选方案1 您可以将不可见标记(在插件中)更改为不可见的链接到具有自动播放的wav文件并且没有循环的页面。
备选方案2 使用html5 / flash选项。 http://www.schillmania.com/projects/soundmanager2/
答案 2 :(得分:0)
// play a sound from the url, on a track, stopping any sound already running on that track
$.sound.play(url, {
track: "track1"
});
以上是您正在使用的插件的文档。
您是否尝试在新曲目上播放每种声音?
我会为每个按键功能的每个曲目创建一个新名称,并将声音src分配给该新曲目。