2013-10-23 45 views
0

所以我正在用Ruby /古藪和線遊戲加載所有的圖像有關的問題是這樣的:使用Ruby /古藪相對文件引用

@image_name = Gosu::Image.new(self, 'C:\Users\Carlos\Desktop\gamefolder\assets\bg.jpg', false)

我想引用它們基於在他們相對於推薦文件的位置上。包含上述行的文件位於C:\Users\Carlos\Desktop\gamefolder\,所以我想我可以將上面的內容更改爲'\assets\bg.jpg''assets\bg.jpg',但這不起作用。

特定的錯誤是「Could not load image assets/bg.jpg using either GDI+ or FreeImage: Unknown Error (Runtime Error).

回答

2

如果你想獲得當前目錄(你的執行上下文的,不一定是你「在」是文件),只需使用Dir.pwd。輸出到控制檯以檢查您的當前目錄實際上是gamefolder

要獲取當前實際ruby文件的目錄(相對於Dir.pwd),請使用__FILE__(例如,

File.dirname(__FILE__) 

傳遞到File.expand_path得到一個完全合格的路徑。您可以通過確保File.exists?("#{File.expand_path File.dirname __FILE__}/assets/bg.jpg")返回true來進行一點理智檢查。

(嘗試File.expand_path('assets/bg.jpg') ...這可能是所有你需要在這裏。)

+0

我試着用'File.expand_path()',和它的工作,但現在的遊戲運行速度非常慢,和我的加熱電腦就像瘋了一樣。任何想法,爲什麼會這樣?另外,你是什麼意思「use Dir.pwd'?在哪裏使用? – user2493615

+0

你可以使用'Dir.pwd'獲取當前目錄,這就是我的意思。如果'File.expand_path'正在爲你工作,那麼使用(我會猜測熱量和時差是一些巨大的圖像處理工作的結果!圖像是否適當地小,並且你確定你沒有在循環內讀取它們?) – struthersneil

+0

他們唯一一次「重讀是在遊戲窗口對象的'initialize'方法中,我所做的只是將對文件的明確引用改爲File.expand_path('assets/file.jpg')',遊戲似乎運行了大約一半速度 – user2493615