我正在使用cocos2d开发适用于iPhone和iPad的游戏,我需要能够在另一个完成时正确播放声音。 我有一个以较小的碎片切碎的音轨,当一个完成并且一个开始播放时,没有空间可以找到最小的间隙。
顺便说一下。我无法将声音粘合到一个文件中,只是播放它,因为文件的顺序将重新安排运行时。
我怎样才能做到这一点?
答案 0 :(得分:2)
使用CocosDenshion,您可以使用
注册代理 [[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self
selector:@selector(musicDidFinish)];
CDAudioManager class reference
只要背景音乐结束,就会调用此代理。这当然只有在您将声音文件作为背景音乐播放时才有效(使用playBackgroundMusic方法)。
如果这对您不起作用,请查看ObjectAL。您将拥有更多选择和更大的灵活性。例如,使用ALSource,您可以对表示声音文件的多个ALBuffer对象进行排队。这意味着无论何时源的缓冲区计数减少到1,您只需将下一个缓冲区排队,即可实现多个声音文件(任何格式)的不间断连续播放。
因为ObjectAL太棒了(好吧,我想是这样:))它已经包含在Kobold2D中并可以使用了。
答案 1 :(得分:0)
您可以使用单个音频队列或RemoteIO音频单元,只需使用任何顺序从任何文件中填充原始/ PCM音频样本的回调缓冲区。