cocos creator 声音、音效使用与本地存储

console.log("############################ init sound manager ###########################################")

//声音管理模块对象;

var sound_manager = {
    is_music_mute: -1, //背景音乐是否禁音 0没有静音 1静音
    is_effect_mute: -1, //音效是否禁音 0没有静音 1静音

    set_music_mute: function(is_mute){
        if (this.is_music_mute === is_mute){ //状态没有改变;
            return;
        }

        this.is_music_mute = (is_mute) ? 1 : 0;
        //如果静音,将音量调到0,否则,调到1;
        if (this.is_music_mute === 1){
            cc.audioEngine.setMusicVolume(0);
        }
        else if(this.is_music_mute === 0){
            cc.audioEngine.setMusicVolume(1);
        }

        //将参数保存到本地
        cc.sys.localStorage.setItem("music_mute", this.is_music_mute);
    },

    set_effect_mute(is_mute){
        if (this.is_effect_mute === is_mute){return;}

        this.is_effect_mute = is_mute ? 1 : 0;

        if(this.is_effect_mute === 1){
            cc.audioEngine.setEffectsVolume(0);
        }
        else if(this.is_effect_mute === 0){
            cc.audioEngine.setEffectsVolume(1);
        }

        cc.sys.localStorage.setItem("effect_mute", this.is_effect_mute);
    },

    //播放背景音乐
    play_music: function(file_name, is_loop){
        cc.audioEngine.stopMusic();
        var url = cc.url.raw(file_name);
        cc.audioEngine.playMusic(url, is_loop);
        if (this.is_music_mute === 1){
            cc.audioEngine.setMusicVolume(0);
        }
        else if(this.is_music_mute === 0){
            cc.audioEngine.setMusicVolume(1);
        }
    },

    //播放音效:
    play_effect: function(file_name, is_loop){
        if (this.is_effect_mute === 1){
            return;
        }
        cc.audioEngine.stopAllEffects();

        var url = cc.url.raw(file_name);
        cc.audioEngine.playEffect(url, is_loop);

        if(this.is_effect_mute === 0){
            cc.audioEngine.setEffectsVolume(1);
        }
    },

    play_click_effect:function(){
        this.play_effect("resources/sounds/audio/click.wav", false)
    },

}


//获取用户本地背景设置;
var local_music_mute = cc.sys.localStorage.getItem("music_mute");
if (local_music_mute){
    local_music_mute = parseInt(local_music_mute); 
    console.log
}
else{
    local_music_mute = 0; 
}

sound_manager.set_music_mute(local_music_mute);

//获取用户本地音效设置;
var local_effect_mute = cc.sys.localStorage.getItem("effect_mute");
if(local_effect_mute){
    local_effect_mute = parseInt(local_effect_mute);
}
else
{   
    local_effect_mute = 0;
}

sound_manager.set_effect_mute(local_effect_mute);

module.exports = sound_manager;

注意 1.cc.sys.localStorage,适用于native 和 h5, getItem("key"),返回值为字符串。

2. 音效设置音量为0,如果播仍会有微弱的声音,(那就别播,如果禁音效)

3. 设置音乐声音的时候,调用播放函数,声音会恢复,所以要静音继续设置音量为0

4. 预加载声音 cc.audioEngine.preload

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值