如何播放 停止两种不同的背景音乐?

我想为场景(Scene)和人物(Character)添加背景音乐,然后在人物做动作的时候让音乐停止。
需要解决的问题是:
1. 同时运行两种背景音乐文件,然后停止与文字变化有关的文件
2. 声音效果可以循环播放
上面的哪个选择可能实现呢?

原问题:Cocos2d play 2 different background music files or loop playEffect

阅读 3.8k
1 个回答

答:James Webster
(最佳答案)
既然是用cocos2d,我建议你可以用其中的SimpleAudioEngine。如果用SimpleAudioEngine,就不可能运行两种背景路径(background track),但可以通过一些细微的调整完成循环效应:
提供一种a -(int) playEffect:(NSString*) file loop:(BOOL) loop的方法
在这种方法中,你需要找出与控制声音效果有关的ALUInt,借鉴它的工作原理,停止背景音乐。
提供a -(void) stopEffectWithHandle:(int) handle的方法,然后将它添加至OpenAL中,阻止音乐继续。
下面是有关循环效果的代码:

int handle = [[SimpleAudioEngine sharedEngine] playEffect:name];
if (loop) {
    alSourcei(handle, AL_LOOPING, 1);
}
return handle;

如下是阻止这种循环继续的代码:

[[SimpleAudioEngine sharedEngine] stopEffect:handle];

答:Firula
我通过this forum post中的方法解决了这个问题,添加背景音乐的代码如下:

CDSoundSource *loopSound = [[SimpleAudioEngine sharedEngine] soundSourceForFile:LOOPING_SOUND_FILENAME];
loopSound.looping = YES;
[loopSound play];

如果想要停止这种背景,可以:

[loopSound stop];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进