2012-11-12 55 views
1

我試圖製作一個簡單的遊戲,到目前爲止我可以捕獲用戶輸入,但是我無法使視圖正常工作來打印圖像。如果我有一個名爲圖像的資源,我如何分配單個精靈在displayOn上顯示此圖像?我已經嘗試了許多方法,例如在初始化方法我試過:如何訪問實例中的類資源

self image := Classname image 

但導致溢出,我被迫關閉的視覺不保存工作。 這樣做的好方法是什麼?

回答

4

您通常直接訪問類方法,而無需將其存儲到實例變量中。例如:

myMethodsWhoNeedsAnImage 
    | image | 
    image := self class imageStoredInClassSide. 
    "now do something with image" 

如果需要保存它,當然你不能做,你在你的例子試了一下,但你可以這樣做:

initialize 
    super initialize. 
    image := ClassWithImage image. 

initialize 
    super initialize. 
    self image: ClassWithImage image. "This is a setter method" 

任何的這些方法應該可行。如果沒有,最有可能你在其他地方有問題,而不是在課堂上訪問。

+0

還有一個問題:asRetainedMedium消息的作用是什麼?我收到一個這個不明白的錯誤。我有我的班級變量資源中的圖片,當問我的圖像我返回CashedImage:(#圖片) –

+0

我從來沒有見過我的生活中的消息:)。也許你可以澄清你使用的是哪個Smalltalk? – EstebanLM

+1

這是一個VisualWorks消息。在VW中,有兩種方法來存儲位圖。圖像使用Smalltalk對象存儲像素顏色和調色板。 Pixmaps使用句柄來處理本地操作系統的圖像對象。通常,Pixmaps顯示速度比圖像快得多。 asRetainedMedium消息是圖片將自己轉換爲Pixmaps的消息。 CachedImage是一個可包含Image和相應Pixmap的對象。如果您嘗試繪製它並且像素圖爲零,則它將在圖像上運行爲「經營中等」,以創建Pixmap並將其緩存在緩存的圖像中。 –