我需要有场景的背景音乐和角色的背景音乐,但当角色做出某些 Action 时我必须停止它。
对于这个问题我必须选择:
- 同时播放2个背景音乐文件,停止播放与角色相关的音乐
- 循环播放音效。
这 2 个中哪一个是可能的和推荐的?
问候!
最佳答案
你说你正在使用 cocos2d,所以我假设你也在使用 cocos2d 提供的 SimpleAudioEngine
。
使用 SimpleAudioEngine
,不可能播放 2 个背景音轨。可以通过一些小的修改来循环效果:
- 提供一个
-(int) playEffect:(NSString*) file loop:(BOOL) loop
消息; - 在这个方法中,您需要了解播放效果通常会做什么。您要查找的是用作声音句柄的
ALUInt
。保留对此的引用。您将需要它来停止循环。 - 提供一个
-(void) stopEffectWithHandle:(int) handle
接收它并将其传递回OpenAL
以停止效果。
-编辑-
这是一些循环效果的代码:
int handle = [[SimpleAudioEngine sharedEngine] playEffect:name];
if (loop) {
alSourcei(handle, AL_LOOPING, 1);
}
return handle;
还有一些用于停止效果:
[[SimpleAudioEngine sharedEngine] stopEffect:handle];
关于ios - Cocos2d播放2个不同的背景音乐文件或循环播放效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370886/