我所理解的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)
【致謝】