2

我目前第一次直接使用 Cocoa 构建屏幕保护程序。现在我在尝试从.saver包中加载资源时遇到了一个问题。我基本上有一个小的 C++ 包装类来.exr使用freeImage. 只要我使用绝对路径,这就会起作用,但这不是很有用,是吗?所以,基本上,我尝试了一切:将.exr文件放在包本身的级别.saver,放在包资源文件夹中,等等。

然后我只是尝试加载.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

您应该使用 NSBundlebundleWithIdentifier:而不是mainBundle获取对您的屏幕保护程序包的引用。

讨论部分:

框架和插件通常使用此方法在运行时定位它们自己的包。此方法可能比尝试使用 bundleForClass: 方法定位捆绑包更有效。

于 2010-05-10T09:01:07.347 回答