【发布时间】:2011-09-10 09:39:08
【问题描述】:
我需要有场景的背景音乐和角色的背景音乐,但是当角色做出一些动作时我必须停止它。
对于这个问题我不得不选择:
- 同时播放2个背景音乐文件,并停止与角色相关的一个
- 循环播放音效。
以下哪一项是可能且推荐的?
问候!
【问题讨论】:
标签: ios objective-c cocoa-touch cocos2d-iphone
我需要有场景的背景音乐和角色的背景音乐,但是当角色做出一些动作时我必须停止它。
对于这个问题我不得不选择:
以下哪一项是可能且推荐的?
问候!
【问题讨论】:
标签: ios objective-c cocoa-touch cocos2d-iphone
你说你在使用 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 的评论是正确的,我在使用该解决方案时遇到了同样的问题。
我使用this forum post 的这种方法解决了这个问题。
播放效果:
CDSoundSource *loopSound = [[SimpleAudioEngine sharedEngine] soundSourceForFile:LOOPING_SOUND_FILENAME];
loopSound.looping = YES;
[loopSound play];
然后停止:
[loopSound stop];
希望这会有所帮助。
【讨论】: