Cocos2d播放2个不同的背景音乐文件或循环播放效果

我需要有场景的背景音乐和角色的背景音乐,但是当角色做出一些动作时我必须停止它。

对于这个问题,我必须选择:

  1. 同时播放2个背景音乐文件,并停止与角色相关的文件
  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]; 

@ToughGuy评论@JamesWebster的答案是对的,我遇到了与该解决方案相同的问题。

我在这个论坛post中使用这种方法解决了这个问题。

播放效果:

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

并停止:

 [loopSound stop]; 

希望这可以帮助。