Objective c SimpleAudioEngine始终发挥相同的效果?
我录制了一些文件,然后播放:Objective c SimpleAudioEngine始终发挥相同的效果?,objective-c,cocos2d-iphone,simpleaudioengine,Objective C,Cocos2d Iphone,Simpleaudioengine,我录制了一些文件,然后播放: NSArray *dirPaths; NSString *docsDir; dirPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); docsDir = [dirPaths objectAtIndex:0];
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];
它在第一次工作,但第二次它再次播放相同的文件,即使我已经录制了一些其他文件
有什么帮助吗?可能您的音频引擎正在预加载该效果并保持该预加载,请尝试:
[[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;
在顶端。试试这个,如果它不起作用,我需要看看你的录音代码,我想发生的是你的音频文件拒绝被新文件覆盖。也许您应该尝试在用户每次记录文件时更改文件名。这样,当他录制时,您可以将文件保存为字符串,格式如下:
[NSMutableString stringWithFormat:@"temp%d.caf",number];
然后,每当用户想要录制时,您将“number”增加1
number = number +1;
您确定新记录也被称为
temp0.caf
?当你想播放一个文件时,你要运行所有这些代码吗?我没有使用这个引擎的经验,但也许你应该在再次预加载它之前解除效果?我真的不明白你想问什么,你说:“即使我已经录制了一些其他文件”我们可以看看代码吗…我正在使用简单的avaudioRecorder录制一个文件,里面没有什么特别的内容。是的,它被记录到相同的文件路径。如果我用CDSoundEngine播放,它确实会改变记录。我试过了,谢谢。那是行不通的。即使没有预加载,它也不会。仍然反复播放相同的音频。如果我用CDSoundEngine播放音频,它工作得很好;