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

时间:2011-09-10 09:39:09

标签: ios objective-c cocoa-touch cocos2d-iphone

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

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

  1. 同时播放2个背景音乐文件,并停止与角色相关的文件
  2. 循环音效。
  3. 其中一个是2个可能&推荐?

    问候!

2 个答案:

答案 0 :(得分:16)

你说你正在使用cocos2d,所以我假设你也在使用cocos2d提供的SimpleAudioEngine

使用SimpleAudioEngine时,无法播放2个背景音轨。可以通过一些小的修改来循环效果:

  • 提供-(int) playEffect:(NSString*) file loop:(BOOL) loop消息;
  • 在这种方法中,你需要找出正常的游戏效果。你要注意的是ALUInt用作声音的句柄。请参考这个。你需要它来阻止循环。
  • 提供一个-(void) stopEffectWithHandle:(int) handle,然后将其传递回OpenAL以停止效果。

-EDIT -

以下是循环效果的一些代码:

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

还有一些用于阻止效果:

[[SimpleAudioEngine sharedEngine] stopEffect:handle];

答案 1 :(得分:0)

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

我使用this forum post中的这种方法解决了这个问题。

播放效果:

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

然后停止:

[loopSound stop];

希望这有帮助。

相关问题