1

イベントでサウンドを再生するアプリを作成していますが、アプリケーションのリソース フォルダーからファイルにアクセスする方法がわかりません。

これが私がやっていることです:

NSSound *player = [[NSSound alloc] initWithContentsOfFile:@"Sound.mp3"] byReference:NO];
[player play];

しかし、それはまったく機能していません。完全な長さのパスを配置すると機能しますが、誰かがアプリケーションフォルダー以外の場所にアプリを配置する可能性があるため、別の方法が必要です。

4

2 に答える 2

9

ファイルを参照するにNSBundleは、メソッドでクラスを使用する必要があります。pathForResource:ofType:

NSSound *player = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"mp3"] byReference:NO];
[player play];

これは、メソッドに渡されたリソースのフル パス名を返します。

于 2009-07-09T11:02:08.947 に答える
1

最初のソリューションが機能しなかった理由を明確にするために:

相対パスは、現在の作業ディレクトリからの相対パスです。Finder から起動された GUI アプリの場合、最初の作業ディレクトリは / です。つまり、ファイル システムのルートです。それがバンドルの Resources フォルダーである場合、ソリューションは機能します。

Perspx が彼の回答で述べたように、正しい解決策は、バンドルに相対パスを完全パスに変換するように依頼することです。

于 2009-07-09T15:20:35.793 に答える