2010-06-16 113 views
1

刚刚开始探索可可,所以几乎总是noob。可可按钮不会显示图像

我写了一个非常简单的游戏。在Interface Builder中进行设置,并使其正常工作。

它包含一些按钮,我现在试图让按钮来显示图像。

首先,我试图在一个叫做tile0的按钮上显示图像。

图像文件(现在只是一个绿色的方块,但我只是试图在我尝试任何更奇特的事情之前做好工作)与控制游戏的类文件坐在同一目录中。

我有下面的代码坐在我wakeFromNib方法:

NSString *myImageFileName = [[NSString alloc] init]; 
myImageFileName = @"greenImage.jpg"; 
NSImage *myImage = [[NSImage alloc] initByReferencingFile:myImageFileName]; 
[tile0 setImage: myImage]; 

麻烦的是,游戏运行良好,但图像不会出现在我的按钮。

有人可以好心告诉我,我是否做了明显错误的事情?

很多谢谢。

回答

1

第一个问题是你分配一个字符串,但用一个字符串常量替换它。这不会导致你的图像问题,但它是一个内存泄漏。

我从来没有使用initByReferencingFile,我通常只使用imageNamed:。有一个使用imageNamed here的例子。

+0

如果您确实使用了imageNamed :,则需要将该图像放入应用程序的Resources目录中。您不能只将图像放在源代码旁边,并期望二进制文件找到它。 – JWWalker 2010-06-16 17:43:08

+1

非常好。 imageNamed工作正常。 非常感谢您的帮助。非常感激。 我有书,我尽可能多地使用文档,但有时会问别人是唯一要做的事情:-) – 2010-06-17 06:38:30

+1

“initByReferencingFile:”不起作用的原因是'initByReferencingFile:',就像它的堂兄'initWithContentsOfFile:',取一个路径名。你传递了一个文件名,它作为一个相对路径,但这不起作用,因为当前工作目录中没有这样的文件(默认是文件系统的根目录,也就是没有/greenImage.jpg )。因为(a)它特别想要一个文件名(有或没有扩展名),并且(b)它在加载的包的资源目录中查找具有该名称的文件,而不是当前的工作目录。 – 2010-06-17 08:38:53