0

私はこれに慣れていないので、物事を単純にするために、main.mにサウンドを追加しようとしています。

私の知る限り、次のコードは機能するはずですが、実行すると「エラードメイン=NSOSStatusErrorDomainコード=-43」という操作を完了できませんでした。(OSStatusエラー-43。) "(ファイルが見つかりません)"

さまざまなオーディオファイルとフォーマットで試してみました-Xcodeでプロジェクトに追加されましたが、G1.wavが見つからない理由がわかりません

AVAudioPlayer *audioPlayer;

        NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"/G1.wav"]];

        NSError *error;
        audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
        audioPlayer.numberOfLoops = -1;

        if (audioPlayer == nil)
            NSLog([error description]);
        else
            [audioPlayer play];  

編集はNSBundleとmainBundleの参照を削除しました-私の誤解

4

1 に答える 1

2

あなたはこれでより良いかもしれません:

NSString *path = [[NSBundle mainBundle] pathForResource:@"G1" ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:path];
...

を使用pathForResource:ofType:すると、バンドルの階層内でファイルがどこにあるかを心配する必要はありません。API 呼び出しがそれを把握します。そして、あなたのコードでは、resourcePath返されるものは明らかに正しいパスではありません。

あちこちに呼び出しを追加してNSLog()、実際に何が起こっているかを確認することもできます。

于 2012-04-27T17:18:23.560 に答える