4

我正在尝试创建一个看起来像声波但行为像钢琴键盘的横幅。我希望这个键盘的每个键都能在悬停状态下播放一个简短的独特声音(.ogg 或 .mp3 样本) 。

我知道如何使用 Flash 来实现这一点,但我想在这个项目中坚持使用 HTML/JS,但实际上我在完成它时遇到了麻烦。

“键盘”看起来像这样(SVG):

键盘

你能给我一些关于如何实现这一点的提示吗?

我在想<svg><canvas>或图像地图可能是不错的选择。非常感谢您的帮助。

4

2 回答 2

5

编辑:您可以尝试这样的事情:

演示:http: //jsfiddle.net/SO_AMK/xmXFf/

jQuery:

$("#layer1 rect").each(function(i) {
    $("#playme").clone().attr({
        "id": "playme-" + i,
        "src": B64Notes[i]
    }).appendTo($("#playme").parent());
    $(this).data("audio", i);
});
$("#layer1 rect").hover(function() {
    var playmeNum = $("#playme-" + $(this).data("audio"));
    playmeNum.attr("src", playmeNum[0].src)[0].play();
    // Reset the src to stop and restart so you can mouseover multiple times before the audio is finished
    $(this).css("fill", "red");
}, function() {
    $(this).css("fill", "#d91e63");
});​

我知道您想避免重复,但没有办法同时播放多个音符。

svg 直接在页面中以使代码更简单,因为它会从另一个域加载,从而阻止 jQuery 访问和修改它。要访问从外部源嵌入的 svg 文档,请参阅:http: //xn--dahlstrm-t4a.net/svg/html/get-embedded-svg-document-script.html

于 2012-10-15T12:57:06.983 回答
3

如何为每个键分配一个 id 并使用 html5 <audio>?然后使用 jQuery 更改音频标签的 src 属性?

$('#a').hover(function(){
    $('#oggfile').attr("src","a.ogg");
    $('#mpegfile').attr("src","a.mp3");
});

$('#c').hover(function(){
    $('#oggfile').attr("src","a.ogg");
    $('#mpegfile').attr("src","a.mp3");
});

$('#c').hover(function(){
    $('#oggfile').attr("src","c.ogg");
    $('#mpegfile').attr("src","c.mp3");
});
​

http://jsfiddle.net/wPGSv/

于 2012-10-15T13:31:31.050 回答