如何播放背景音乐(Cocos2d iOS)
我是Cocos2d框架的新手,我需要在主菜单场景中帮助了解如何在循环中播放.wav文件。另外,我想得到一些关于如何在两个精灵碰撞时播放声音的帮助如何播放背景音乐(Cocos2d iOS),ios,cocos2d-iphone,Ios,Cocos2d Iphone,我是Cocos2d框架的新手,我需要在主菜单场景中帮助了解如何在循环中播放.wav文件。另外,我想得到一些关于如何在两个精灵碰撞时播放声音的帮助 谢谢在使用v3之前,您可以在使用音频文件之前的某个时间点预加载音频文件。例如,要预加载背景音乐,您可以(这会为播放做好准备,但不会加载整个内容,而是流式播放): 要玩它,你可以称之为: [[SimpleAudioEngine sharedEngine] playBackgroundMusic:"sound.aifc"]; [[SimpleAudioE
谢谢在使用v3之前,您可以在使用音频文件之前的某个时间点预加载音频文件。例如,要预加载背景音乐,您可以(这会为播放做好准备,但不会加载整个内容,而是流式播放): 要玩它,你可以称之为:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:"sound.aifc"];
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
[[SimpleAudioEngine sharedEngine] stopEffect:audioId];
要阻止它,你可以打电话:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:"sound.aifc"];
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
[[SimpleAudioEngine sharedEngine] stopEffect:audioId];
对于声音效果(如在两个对象碰撞时播放声音),您可以通过先预加载(加载并缓存整个对象)来执行相同的操作:
然后在需要时播放特定实例:
unsigned int audioId = [[SimpleAudioEngine sharedEngine] playEffect:@"sound.caf"
pitch:1.0f
pan:0.0f
gain:1.0f];
要停止该特定实例,请调用:
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:"sound.aifc"];
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];
[[SimpleAudioEngine sharedEngine] stopEffect:audioId];
对于效果,您必须在完成音频后卸载音频(不必卸载背景音乐):
如果您使用的是v3,您可以使用以下方式预加载、播放和停止背景音乐:
// Preload...
[[OALSimpleAudio sharedInstance] preloadBg:@"sound.aifc"];
// Play (and loop the music)...
[[OALSimpleAudio sharedInstance] playBgWithLoop:YES];
// To stop the music...
[[OALSimpleAudio sharedInstance] stopBg];
对于v3中的音频效果,您可以使用以下方法预加载声音效果:
ALBuffer* soundBuffer = [[OALSimpleAudio sharedInstance] preloadEffect:@"sound.caf"];
或者,您可以异步执行此操作:
__block ALBuffer* soundBuffer;
[[OALSimpleAudio sharedInstance] preloadEffect:@"sound.caf"
reduceToMono:NO
completionBlock:^(ALBuffer* buffer)
{
soundBuffer = buffer;
}];
或者,您可以通过以下方式加载音频文件阵列:
NSArray* soundFiles = @[@"sound1.caf", @"sound2.caf", @"sound3.caf"];
[[OALSimpleAudio sharedInstance] preloadEffects:soundFiles
reduceToMono:NO
progressBlock:^(NSUInteger progress,
NSUInteger successCount,
NSUInteger total)
{
if (successCount == total)
{
CCLOG(@"Sound files loaded!");
}
}];
要播放声音效果,请执行以下操作:
[[OALSimpleAudio sharedInstance] playEffect:@"sound.caf" loop:NO];
或者,如果您有音频缓冲区,可以使用其他方式播放声音效果:
[[OALSimpleAudio sharedInstance] playBuffer:soundBuffer
volume:1.0f
pitch:1.0f
pan:0.0f
loop:NO];
要卸载所有加载和缓存的效果,请执行以下操作:
[[OALSimpleAudio sharedInstance] unloadAllEffects];
希望这能有所帮助。可能与@MaxMacLeod:重复,或者不重复,OP没有提到哪个版本。@YvesLeBorg版本3没有与音频相关的更改@MaxMacLeod我还没有编译这些发行说明,但Denshion和SimpleAudioEngine似乎已经被OAL引擎取代(在v3中)。见下面的答案。