我正在開發一個視網膜啓用cocos2d遊戲。我在我的項目中爲視網膜和非視網膜添加了大量圖像。遊戲在模擬器[視網膜和非視網膜]都能正常工作,而且在非視網膜設備中也可以完美運行。但是當我在視網膜啓用的設備上運行相同的意思,它會崩潰而不顯示任何消息。當我用樂器應用程序測試我的遊戲時,它會顯示低內存警告消息,如[http://screencast.com/t/sfRDTELrhomC]。當應用程序崩潰時在啓用Retina的設備中運行時,它不會在控制檯中顯示任何錯誤消息。我非常困惑目前的狀態,任何人都可以幫助我解決這個問題。應用程序崩潰在視網膜啓用低內存警告設備但在完美的非視網膜設備的作品
0
A
回答
0
您可能正在使用大量內存來加載圖像,因此設備內存不足並且會導致應用程序死機。
我猜你正在使用PNG(因爲你沒有提供任何信息);當你從PNG,JPG等加載圖像時,圖像會被加載到內存中兩次,因爲它必須由cocos「翻譯」爲紋理。此外,此操作的紋理大小必須是2的冪,因此150x150的圖像會佔用256x256圖像的內存。這是很多浪費的內存。
我的第一個建議是購買Texture Packer(我根本沒有隸屬於它們,它只是一個偉大的軟件),它會把你的圖像製作成一個壓縮的PVR精靈表,其中包含幾個圖像一個紋理。
PVR文件直接加載到紋理中,因此它們不使用雙重內存,並且由於它們是精靈表,因此您的像素浪費較少。
我的第二個建議是,當加載你的圖像時,不要在runloop的同一個tick中做所有的事情; Cocos使用了很多autoreleases,並且直到tick結束才清除內存,所以不是一次一次地將所有圖像加載到內存中,而是調度該方法多次調用並每次加載一個新文件。
+0
PS。這不會在公園散步。這將需要一些工作。 – EmilioPelaez
相關問題
- 1. 在視網膜和非視網膜設備上的renderInContext
- 2. 如何使可在視網膜和非視網膜設備來使用視網膜準備圖像
- 3. 知道設備類型 - 視網膜/非視網膜
- 4. 視網膜圖像,非視網膜設備
- 5. 在非視網膜顯示器和視網膜顯示器的設備中測試iOS應用程序
- 6. 視網膜和非視網膜ios應用程序
- 7. 應用程序崩潰 - 完美的作品上的設備
- 8. 按鈕圖像命名爲許多設備(視網膜和非視網膜)
- 9. 視網膜和非視網膜精靈的獨立gulp.spritesmith設置
- 10. [IOS]只支持視網膜設備
- 11. UIPageControl滯後於視網膜設備
- 12. 視網膜啓用設備上的媒體查詢
- 13. 視網膜與非視網膜iOS
- 14. 在非視網膜設備上從UIImagePickerController獲取640x640 UIImage
- 15. 更新非視網膜帆布應用視網膜顯示
- 16. 可以在視網膜上使用非視網膜圖形嗎?
- 17. 在非視網膜模式下啓動應用程序?
- 18. iOS應用程序非視網膜和視網膜圖像概念
- 19. 創建非視網膜設備一個0.5px的UIView邊界
- 20. 替換視網膜準備設備的背景圖像
- 21. CGContextConvertRectToDeviceSpace可以在視網膜設備上正常工作嗎?
- 22. 2x圖像無法在視網膜設備上工作
- 23. 當設備更改爲iPad時,應用程序在模擬器中崩潰視網膜
- 24. 抑制視網膜設備上的內容縮放
- 25. 明確添加@ 2x到非視網膜設備
- 26. 應用程序在其他設備上崩潰,但在我的設備上完美工作
- 27. 視網膜顯示設備的Css規則適用於即8
- 28. 如何找到我的視網膜設備使用2x圖像?
- 29. UIImageView contentMode在視網膜和非視網膜顯示不同
- 30. CCLabelBMFont(字體大小600)崩潰視網膜設備(不是模擬器)
您可以模擬模擬器中的內存警告,它位於硬件菜單下。確保啓用異常斷點,然後重試,您可能會看到崩潰發生的位置 – andreamazz
您是否使用ImageNamed方法來顯示圖像? – freelancer
@ SmartWork不,我沒有使用任何類似的方法 – Blisskarthik