對quickcocos2dx 多分辨率適配的理解 -开发者知识库

對quickcocos2dx 多分辨率適配的理解 -开发者知识库,第1张

我的適配版本是quickcocos2dx 2.2.5,下面我來談一談自己對多分辨率適配的理解。

1.我們應當確定我們的參考分辨率,得到我們的圖片資源大概的縮放比例。可以通過我們的 config.lua中的參數來確定。

-- screen orientation
CONFIG_SCREEN_ORIENTATION = "landscape"

-- design resolution
CONFIG_SCREEN_WIDTH  = 960
CONFIG_SCREEN_HEIGHT = 640

-- auto scale mode
CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT"

首先,我們新建了一個橫版的項目,並且這個橫版項目的參考分辨率是960 * 640,我們不妨取一張960 * 640的圖片來進行測試,在960 * 640 的分辨率下,我們的圖片應該剛好填滿整個屏幕。 

CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT"這行代碼的意思是我以我的高為標准,也就是不管我在什么分辨率的情況下,我都是以我當前分辨率的高填滿屏幕的高為標准進行縮放。那么舉個例子,如果我是800 * 640 這樣一個分辨率下,我的圖片要在縱向填滿,我的960*640的這張圖片剛好不需要進行縮放,但是我的圖片橫向就會超出我的屏幕。如果我的分辨率是1280 * 720 的話,我要在縱向填滿我的屏幕,那么我的那張960*640的圖片就會被拉伸,也就是寬和高都會乘以720/640的這個比值,也就是9/8,那么我的示例圖片應當被拉伸成為1080*720,那么我的圖片就會在橫向留有黑邊。同樣地,在目前的主流分辨率市場,應該只有1024*768或者2048*1536這樣的分辨率會導致我們上述的設定會在橫向溢出屏幕(之前的800*640是一個例子,應該幾乎沒有這種分辨率)。

那么,如果我們的參考分辨率是960*640的橫板項目,並且我們是CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT",那么根據上文,我們要保證沒有黑邊,也就是我的背景圖片要正好貼着屏幕橫向的兩條邊或者有部分溢出。也就是說,我們要讓相對黑邊最寬的那一個分辨率的背景圖片的最終效果也要頂到屏幕的左右兩端。我們不妨用quick模擬器的所有分辨率來進行測試,共有12種分辨率,分別是480*320,960*640,1136*640,1024*768,2048*1536,800*480,854*480,960*540,1024*600,1280*720,1280*800,1920*1080。通過比值的計算,我們求出相對黑邊最多的分辨率應該是 854*480, 那么我們的背景圖片應為 854*640/480=1138.66,大概為1140,也就是我們的背景圖片的大小應為1140*640 。

2.我們的參考分辨率是960*640的話,我們的背景圖上的元素則分為兩種,一種是ui,如放置於屏幕左上角等位置的返回按鈕,另一種是我的場景元素(應該一直置於可見區域以內)。這里場景元素指的是我們的人物動畫等可能與用戶交互的東西。

(1)如果是ui,而且這個ui置於屏幕的左上角,我們可以直接用display.left 100, display.top - 100去確定。

(2)如果是可見區域內元素,一個可視界面內元素居於屏幕左側,我們不妨用display.cx 和 display.cy加減一些相對偏移量來進行定位,同時務必在1024*768這個分辨率下保證我們的界面內元素不會超出屏幕。

總結:我對於quickcocos2dx多分辨率的做法就是先確定背景圖片的大小,如果我的參考分辨率是960*640,在定高的情況下,那么我的背景圖片的大小應當是1140*640,注意,這里的背景圖片橫向在有的分辨率上會有一些溢出屏幕,只有在854*480的分辨率上會幾乎顯示完整。所以我們的ui的位置需要放在屏幕四周,與屏幕邊緣接近,那么就用display.top等進行加減定位。我們的可視區域內的動畫和圖片可以通過在960*640下通過display.cx和display.cy加減來進行確定,保證在1024*768這種較為極端的分辨率下也能完整顯示。

github: https://github.com/Froyo91/quickcocos2dx-multi-resolution-adaptation



最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复