cocos2dx同时播放多个音效
在使用 cocos2d-x 同时播放多个音效时,可能会遇到部分音效无法播放,或者循环音效播放中断的问题。经过排查,问题的根源在于 Cocos2dxSound.java
文件。
在该文件中,有如下代码:
private static final int MAX_SIMULTANEOUS_STREAMS_DEFAULT = 5;
在创建 SoundPool
对象时,需要指定并发音频流的数量。SoundPool
的构造函数如下:
public SoundPool (int maxStreams, int streamType, int srcQuality)
需要注意的是,这个构造函数在 API 级别 21 中已被弃用,建议使用 SoundPool.Builder
来创建和配置 SoundPool
实例。下面详细介绍该构造函数的参数和返回值:
- 参数:
maxStreams
:此SoundPool
对象允许的最大并发音频流数量。streamType
:音频流类型,具体可参考AudioManager
中的描述。例如,游戏应用通常会使用特定的音频流类型。srcQuality
:采样率转换器的质量,目前该参数没有实际效果,使用 0 作为默认值即可。- 返回值:
- 若创建成功,返回一个
SoundPool
对象;若创建失败,则返回null
。
在 cocos2d-x 中,这个最大并发音频流数量被设置为 5(在 I9100 设备上设置为 3)。为了解决同时播放多个音效时出现的问题,可以手动将该值调大。
版本信息:本文内容基于 cocos2d-x 3.0 版本。