cocos2dx同时播放多个音效

2015年02月12日 10:57 0 点赞 0 评论 更新于 2017-05-09 18:43

在使用 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 版本。

作者信息

boke

boke

共发布了 1025 篇文章