Cocos2d播放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];
希望这可以帮助。