【发布时间】:2011-10-25 17:07:09
【问题描述】:
我正在使用 cocos2d 为 iPhone 和 iPad 开发一个游戏,我需要能够在另一个游戏完成时准确地播放声音。 我有一个被切成小块的配乐,播放结束和开始播放之间的最小间隙没有空间。
顺便说一句。我无法将声音粘合到一个文件中并播放它,因为文件的顺序将在运行时重新排列。
我怎样才能做到这一点?
【问题讨论】:
标签: iphone objective-c cocos2d-iphone audio
我正在使用 cocos2d 为 iPhone 和 iPad 开发一个游戏,我需要能够在另一个游戏完成时准确地播放声音。 我有一个被切成小块的配乐,播放结束和开始播放之间的最小间隙没有空间。
顺便说一句。我无法将声音粘合到一个文件中并播放它,因为文件的顺序将在运行时重新排列。
我怎样才能做到这一点?
【问题讨论】:
标签: iphone objective-c cocos2d-iphone audio
使用 CocosDenshion,您可以注册一个委托
[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self
selector:@selector(musicDidFinish)];
CDAudioManager class reference
只要背景音乐结束,就会调用这个委托。当然,这仅在您将声音文件作为背景音乐播放(使用 playBackgroundMusic 方法)时才有效。
如果这对您不起作用,请查看ObjectAL。您将拥有更多选择和更大的灵活性。例如,使用ALSource,您可以将多个代表声音文件的ALBuffer 对象排队。这意味着只要源的缓冲区计数减少到 1,您只需排队下一个缓冲区即可实现多个声音文件(任何格式)的不间断、连续播放。
因为 ObjectAL 太棒了(嗯,我想是的 :))它包含在 Kobold2D 中并可以使用。
【讨论】:
您可以使用单个音频队列或 RemoteIO 音频单元,只需使用来自任何文件的原始/PCM 音频样本以任何顺序填充回调缓冲区。
【讨论】: