/ 开发笔记

#Cocos Creator# 为什么音乐音效在场景切换的时候自动停止了?

问题背景

一般来说,每个场景都会有自己的背景音乐,所以,之前我一直没有注意到有什么问题。

直到有一天,我想让游戏从头到尾一直循环播放同一首背景音乐,结果,咦,背景音乐怎么自动停了?

原因

暂时还没有找到Cocos Creator对此的相关说法。

解决方法

Cocos Creator提供了两种方式来播放音乐音效:

  1. Audio Source组件

使用Audio Source组件,可以直接在场景编辑器里对音乐的播放进行设置,这是很常用的一种方式。

但是,正是这种方式,导致场景切换时,音乐自动停止播放。

而且,这种中断不是因为Node被删除导致的,而是Cocos Creator内部的机制导致的。

  1. cc.audioEngine

Cocos Creator还提供了另外一种非组件的方式来播放音乐,就是cc.audioEngine模块。

与Audio Source不同,cc.audioEngine只能通过脚本来调用,好处是可以获得更多的控制权,也就是不会被自动停止播放。

具体代码:

    let audioId = cc.audioEngine.playMusic(this.clip, true);
    cc.audioEngine.setVolume(audioId, 0.5);

参考

http://docs.cocos.com/creator/manual/zh/audio/audio.html