2010-06-16 108 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