天天看點

Libgdx中不同分辨率圖檔替換的解決方案

    最近做産品開發,考慮到以後會在pad和手機平台釋出,是以圖檔要用到不同的尺寸,比如做HD版本。但是如果在程式中直接替換圖檔而不影響到功能呢?

    Libgdx的相關資料找了很久,發現已經有針對IOS系統Retina的解決方案,隻需要在配置檔案中填寫縮放比例即可,正式我們想要的。但是仔細看了一下,應該是第三方IOS類庫實作的功能,那在Android下如何解決呢?

    解決這個問題首要保證的就是Stage的尺寸是不能變的,因為程式中大量用到坐标參數,一旦改變就會引發很多關聯問題。經過初步研究,我發現本地圖檔如果放大一倍,其實隻是每個Texture占了更大的面積,如果能把圖檔顯示時再縮小一倍就能解決問題。當螢幕尺寸是2倍的情況,那圖檔就相當于沒有縮小,也就是我們預期的效果。我們的系統中基本上所有圖檔都是利用TextureRegion的封裝,并沒有直接去draw texture/sprite的方式,是以這縮小的工作就定在TextureRegion裡面去實作。仔細分析了源代碼,我發現直接在getRegionWidth和getRegionHeight上做文章即可,這裡修改源碼讓應有的圖檔寬度進行相應比例的縮小,這樣最終顯示就能達到放大的本地圖檔按正确比例顯示。

    隻是在圖檔顯示上做縮放調整,應該對功能影響比較小,這個方案初步測試通過,實際使用還有待繼續考證。

本文轉自passover 51CTO部落格,原文連結:http://blog.51cto.com/passover/1418263,如需轉載請自行聯系原作者

繼續閱讀