11.声音管理器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27032631/article/details/87967280

自行封装的声音管理器

var dictionary = require("dictionary");
var AudioController = {

   //声音片段
    AudioClipList : new dictionary(),
    //声源 AudioSource
    AudioSourceList:new dictionary(),

    init:function()
    {
        var audioParents=cc.find("AudioManager");
        var child=audioParents.children;
        child.forEach(key => {
            
            var audioSourece=key.getComponent(cc.AudioSource);        
            this.AudioSourceList.add(key.name,audioSourece);
        });
    },

    loadClip(type,mName,callBack)
    {
        var loadPath=window.Constant.RootPath.AUDIO_ROOT_PATH+type+"/"+mName;
        window.cc.loader.loadRes(loadPath,function(err,clip)
        {
            if(err!=null)
            {
                console.log("错误信息:"+err);
                return;
            }
            this.AudioClipList.add(mName,clip);
            if(callBack!=null)
            {
                callBack(clip);
            }
        }.bind(this));
      
    },
    /// name 表明 声音源 clip表示音效
    playerBG(mName)
    {
        var type=window.Constant.AudioType.BGAudio;
        this.playBG(type,mName);
    },
    //播放特效 比如 按钮或者 游戏中的音效
    playSXF(mName)
    {
        var type=window.Constant.AudioType.SXFAudio;
        var volume=1;
        this.playAudio(type,mName,volume);
    },
    //播放背景音乐
    playBG(type,mName)
    {
        var audioSource=this.AudioSourceList.get(type);     
        if(!this.AudioClipList.containKey(mName))
        {       
            this.loadClip(type,mName,function(gameclip)
            {
                audioSource.clip=gameclip
                audioSource.play();
            });
            return;
        }
        var clip=this.AudioClipList.get(mName);
        if(clip==null)
           return;
        audioSource.clip=clip;
        audioSource.play();
        
      
    },
    playAudio(type,mName,volume)
    {
        if(!this.AudioClipList.containKey(mName))
        {       
            this.loadClip(type,mName,function(gameclip)
            {
                cc.audioEngine.play(gameclip, false,volume);
            });
            return;
        }
        var clip=this.AudioClipList.get(mName);
        if(clip==null)
           return;
          cc.audioEngine.play(clip, false,volume);
    },
    

   //暂停功能
    pause:function()
    {
        array.forEach(element => {
            
            element.pause();
        });
    }
}
module.exports=AudioController;

微信平台

在这里插入图片描述

4399平台

4399游戏链接:http://www.4399.com/flash/203652.htm

猜你喜欢

转载自blog.csdn.net/qq_27032631/article/details/87967280