在处理游戏背景音乐中遇到的问题,策划对于音乐播放提出新的想法。但由于目前周围没有人尝试过,所以自己摸索的来。
需求
在同一场景音乐处理
一般同一场景是同一首背景音乐。
现需求在同一场景(时代)内播放不同的音乐,在音乐配表中,同一场景加入新的音乐,每个音乐都带有一个cd字段,这个字段代表这首音乐播放剩余cd秒时,播放下一首音乐。相应的音乐资源会做淡入淡出处理。
解决:做一个一直存在的定时器,用一个变量curAudio存当前音乐的path,用一个变量lastAudio存上一首音乐的path,获取到音乐资源的时长,在定时器内检测是否到达cd时间段,如在play下一首,cd完stop上一首,同时curAudio存当前音乐。
id = cc.audioEngine.play(audio, loop, volume); //参数为:音乐,循环,音量
curAudio = audio;
cc.audioEngine.getDuration(id); //获取音频时长
cc.audioEngine.stop(lastAudio); //参数为:指定音乐
lastAudio = curAudio;