2

私は現在、スクリーンセーバーを構築するために初めてCocoaと直接協力しています。.saverバンドル内からリソースを読み込もうとしたときに問題が発生しました。.exr基本的に、を使用してファイルをロードするための小さなC++ラッパークラスがありますfreeImage。これは、絶対パスを使用している限り機能しますが、あまり役に立ちませんね。.exrしたがって、基本的には、ファイルをバンドル自体のレベルに.saver配置したり、バンドルのResourcesフォルダー内に配置したりするなど、すべてを試しました。

次に、このようなものをロードしようとしました.exrが、成功しませんでした。

particleTex = [self loadExrTexture:@"ball.exr"];

また、次のように.saverバンドルの場所に移動してみました。

particleTex = [self loadExrTexture:@"../../../ball.exr"];

...おそらく.exrその場所からロードしますが、成功しません。

それから私はこれに出くわしました:

NSString * path = [[NSBundle mainBundle] pathForResource:@"ball" ofType:@"exr"];
const char * pChar = [path UTF8String];

...これはCocoaでリソースを見つけるための一般的な方法のようですが、私の場合は何らかの理由で空になっています。それについて何かアイデアはありますか?頭に浮かんだことは何でも試してみましたが、うまくいかなかったので、入力していただければ幸いです。

4

1 に答える 1

2

スクリーンセーバーバンドルへの参照を取得するbundleWithIdentifier:代わりに、NSBundleを使用する必要があります。mainBundle

ディスカッションセクションから:

このメソッドは通常、フレームワークとプラグインが実行時に独自のバンドルを見つけるために使用します。このメソッドは、bundleForClass:メソッドを使用してバンドルを見つけようとするよりもいくらか効率的です。

于 2010-05-10T09:01:07.347 に答える