1. 程式人生 > >我所理解的cocos2dx螢幕適配

我所理解的cocos2dx螢幕適配

首先:先了解幾個概念

解析度:解析度指的是螢幕影象的精密度,即顯示器能顯示的畫素有多少舉個例子:解析度480*320,意思就是水平方向含有的畫素為480個,垂直方向的畫素為320個。螢幕尺寸不變的情況下,解析度越高,顯示效果就越精密、細膩。同時解析度也反映了螢幕的長寬比例(3:2)

視窗解析度:在AppDelegate.cpp中有個設定視窗解析度的函式applicationDidFinishLaunching()。該函式設定了我們預想裝置模擬器螢幕的大小,也就是應用程式的視窗大小。(在實際手機上執行時,手機螢幕的大小是我們無法設定的)

glview->setFrameSize(480,320)

設計解析度:在AppDelegate.cpp中也有一個設定設計解析度的函式applicationDidFinishLaunching()。該函式設定了我們遊戲設計時候的解析度,也就是可視區域的大小。同時也是螢幕適配的關鍵,通過設定可視區域的解析度以及螢幕適配模式,來實現螢幕適配。

glView->setDesignResolutionSize(480,320,ResolutionPolicy::SHOW_ALL)

螢幕適配模式:

(1)ResolutionPolicy::EXACT_FIT

(2)ResolutionPolicy::NO_BORDER

(3)ResolutionPolicy::SHOW_ALL

(4)ResolutionPolicy::FIXED_WIDTH

(5)ResolutionPolicy::FIXED_HEIGHT

螢幕適配計算方法:

螢幕解析度(fWidth,fHeight),設計解析度(dWidth,dHeight)

縮放因子:width = fWidth/dWidth , height = fHeight/dHeight 。

(1)EXACT_FIT :(dWidth * width , dHeight * height)

(2)NO_BORDER :( dWidth * max(width,height) , dHeight * max(width,height) )

(3)SHOW_ALL:(dWidth * min(width,height) , dHeight * min(width,height))

(4)FIXED_WIDTH:(dWidth * width , dHeight * width)

(5)FIXED_HEIGHT:(dWidth * height , dHeight *height)

【致謝】