SimpleAudioEngine总是起到同样的效果吗?

时间:2012-05-20 11:19:24

标签: objective-c cocos2d-iphone simpleaudioengine

我录制了一些文件然后播放:

NSArray *dirPaths;
    NSString *docsDir;
    dirPaths = NSSearchPathForDirectoriesInDomains(
                                                   NSDocumentDirectory, NSUserDomainMask, YES);
    docsDir = [dirPaths objectAtIndex:0];
    NSString *soundFilePath = [docsDir
                               stringByAppendingPathComponent:@"temp0.caf"];

 //play
[[SimpleAudioEngine sharedEngine] preloadEffect:soundFilePath];
    [[SimpleAudioEngine sharedEngine] playEffect:soundFilePath  pitch:1.5f pan:0.0f gain:0.3f];

它第一次工作,但第二次它再次播放同一个文件,即使我已经录制了其他文件。

任何帮助?

2 个答案:

答案 0 :(得分:1)

也许您的音频引擎正在预加载该效果并保持预加载,请尝试:

[[SimpleAudioEngine sharedEngine] preloadEffect:nil];
[[SimpleAudioEngine sharedEngine] preloadEffect:soundFilePath];

    [[SimpleAudioEngine sharedEngine] playEffect:soundFilePath  pitch:1.5f pan:0.0f gain:0.3f];

此外,该代码何时何地被调用。你的录音后它被称为对吗?也许试试:

NSArray *dirPaths = nil;
    NSString *docsDir = nil;

在顶部。试试这个,如果它不起作用我需要看你的录音代码

答案 1 :(得分:0)

我认为发生的事情是您的音频文件拒绝被新文件覆盖。也许您应该在每次用户记录文件时尝试更改文件的名称。因此,当他记录时,您将文件保存为字符串,格式为:

[NSMutableString stringWithFormat:@"temp%d.caf",number];

然后,只要用户想要录制,就会将“数字”增加一。

number = number +1;