取消选中复选框时,声音不会静音

时间:2012-08-05 00:14:47

标签: javascript jquery html5-audio

我正在创建一个游戏,当出现开始屏幕时,一些音乐开始播放。现在我还在开始屏幕中添加了一个复选框。选中此复选框后,如果未选中则应听到音乐,不应播放音乐。

我有以下代码:

// Show the start screen and play some music.
game.start(game.DEMO_MODE);
if (document.getElementById('music').checked){ //check if checkbox is checked
    music.play();
    music.loop(); //Loop the music
}

如果选中该复选框,此代码将检查游戏负载,如果是,则播放音乐。这种方法效果很好,但只有在游戏加载时才有效。如果选中此复选框并且某人在开始屏幕中取消选中,则音乐将继续播放。除非他重新加载游戏,否则声音会静音。

显然我不想要这个。取消选中复选框时应停止声音,反之亦然。

我认为这个问题可以通过使用jQuery的.bind('change',function(){来解决,但我没有成功。我希望有人知道需要添加什么...

复选框的代码(它还将已检查/未检查的状态存储到cookie或本地存储中):

jQuery(function($) {
    // Aa key must is used for the cookie/storage
    var storedData = getStorage('com_test_checkboxes_'); 

    $('div#musiccheck input:checkbox').bind('change',function(){
        // do something here tho mute or unmute the sound??

        // save the data on change
        storedData.set(this.id, $(this).is(':checked')?'checked':'not');
    }).each(function() {
        // on load, set the value to what we read from storage:
        var val = storedData.get(this.id);
        if (val == 'checked') $(this).attr('checked', 'checked');
        if (val == 'not') $(this).removeAttr('checked');
        if (val) $(this).trigger('change');
    }); 
});

如何解决这个问题?

亲切的问候,

莫里斯

1 个答案:

答案 0 :(得分:1)

$("#music").on('change', function() {
    if (this.checked) {
        music.play();
        music.loop();
    }else{
        music.stop();
    }
});