喜欢在点击按钮时播放随机音调序列

时间:2015-09-04 23:59:13

标签: javascript jquery

我对这个东西很感兴趣,但是当我点击按钮5时,我想连续播放4个音调......

我对数组,Math.random,setInterval有一个基本的了解......但是不能用我的慢脑包围如何制作像这项工作一样简单的东西。 任何指向正确方向的人都会非常感激。

我所拥有的只是使声音单独触发的代码.....

$("document").ready(function() {

    $(".button_1").click(function () {
    $('#sound-1').get(0).play();
    });

    $(".button_2").click(function () {
    $('#sound-2').get(0).play();
    });

    $(".button_3").click(function () {
    $('#sound-3').get(0).play();
    });

    $(".button_4").click(function () {
    $('#sound-4').get(0).play();
    });

    $(".button_5").click(function () {
    $("????").get(0).play();
    });
});

2 个答案:

答案 0 :(得分:1)

以下是如何播放单个随机声音。您可以将Math.floor(Math.random() * 4) + 1用于1到4之间的数字,并执行"#sound-"+randNum

$(".button_5").click(function () {
    ranNum = Math.floor(Math.random() * 4) + 1; 
    $("#sound-"+ranNum).get(0).play();
});

要连续播放多首随机歌曲,您可以使用setInterval(),并跟踪其运行次数,然后在完成时clearInterval()

$(".button_5").click(function () {
    var plays = 4; // Play 4 sounds, each a second apart.
    var timer = setInterval(function(){
        ranNum = Math.floor(Math.random() * 4) + 1;  
        $("#sound-"+ranNum).get(0).play();
        plays--;
        if(plays < 1) clearInterval(timer);
    }, 1000);
});

请注意,它可以重复声音,如果您不想重复,则需要跟踪播放的声音。

最后,您可能需要确保无法再次单击该按钮,直到播放的声音结束。执行此操作的基本方法是disable按钮,直到间隔结束:

$("#button_5").click(function () {
    var plays = 4;
    var self = this;
    $(self).prop( "disabled", true );
    var timer = setInterval(function(){
        ranNum = Math.floor(Math.random() * 4) + 1  
        $("#sound-"+ranNum).get(0).play();
        plays--;
        if(plays < 1) {
            clearInterval(timer);
            $(self).prop( "disabled", false );
        }
    }, 1000);
});

Here is a fiddle example。请注意,在示例中,我只是做console.log("#sound-"+ranNum)而不是显示会播放的内容。

答案 1 :(得分:0)

你应该有一个播放声音的功能,然后再调用四次。

function playSound(number){
    $('#sound-' + number).get(0).play();
}

$(".button_5").click(function () {
    var tones = 1;
    var t = setInterval(function(){
        if(tones>=4) clearInterval(t);
        playSound(Math.floor((Math.random() * 4) + 1));
        tones++;
    }, 1000);
});

在这里摆弄http://jsfiddle.net/roanrj6e/