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];

最初は機能しますが、2回目は、他のファイルをすでに記録していても、同じファイルを再度再生します。

何か助けはありますか?

4

2 に答える 2

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;

頂点で。これを試してください。うまくいかない場合は、記録コードを確認する必要があります

于 2012-05-20T11:43:44.190 に答える
0

私が考えているのは、オーディオ ファイルが新しいファイルによる上書きを拒否していることです。ユーザーがファイルを記録するたびに、ファイルの名前を変更するようにしてください。彼が記録するとき、次の形式でファイルを文字列として保存します。

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

次に、ユーザーが記録したいときはいつでも、'number' を 1 増やします。

number = number +1;
于 2012-05-23T03:27:06.467 に答える