cocos2d x螢幕適配

2021-06-29 04:40:40 字數 2128 閱讀 4469

第一,對於螢幕適配問題,首先必須理解幾個基本的概念。

framesize:實 際上就是裝置的原始解析度,開發環境中可以通過cceglview::sharedopenglview()->setframesize()來設 置裝置的解析度大小,當然也可以可以通過cceglview::sharedopenglview()->getframesize()獲取得到設 備的解析度

winsize:開發所設計的解析度,即setdesignresolutionsize方法中傳入的前兩個引數,通過ccdirector::shareddirector()->getwinsize()獲取

visiblesize:一定小於等於winsize,即在winsize範圍之內,保持framesize寬高比的最大顯示區域。

visibleorigin:在winsize下被framesize擷取的區域大小,即設計解析度中與螢幕左下角對應的點。

第二,cocos2d-x自帶的三種適配方案

這裡我們將裝置的解析度改為768*1024,開發設計的解析度為640*960,背景圖為大小為640*960,在螢幕居中顯示,cocos2d-x預設的適配方案得到的效果:

可以看出由於沒有採用合理的適配方法,影象會根據我們設定的位置顯示大小,如果影象本身比裝置解析度大,則只顯示裝置解析度大小的影象,反之則會留有空餘處,如上圖的黑邊。如我們採用下面三種基本的適配方案又會得到不同的效果

kresolutionexactfit:通過拉伸來填滿螢幕,寬高比不同,無法等比縮放來填充螢幕,會扭曲變形,如圖中間的人物原先是正方形的,現在變成了長方形,介面稍複雜,就會看見明顯的不協調,這種方式通常不可取。

kresolutionnoborder:無黑邊,寬高等比縮放,但縮放的比例按照寬比和高比中大的來進行。這樣出現的結果可能就是有的一部分會顯示在螢幕的外面。

kresolutionshowall:全 部顯示,保證內容在螢幕內顯示,同樣是寬高等比縮放,但縮放比例取小的進行。按這種方式適配可能會在螢幕上出現黑邊,如果打算在黑邊出填放別的精靈是無效 的,因為等比縮放後,黑邊的部分不會進行繪製。假如設計解析度低於大部分裝置解析度,在忽略黑邊的情況下,這種適配方式可以滿足大部分裝置,而我們後面改 進的適配方案就是把留出來的黑邊利用上

以 上三種適配方式雖然能在一定問題上能解決適配的問題,不過對於現今各式各樣、眾多解析度的裝置來說,想要一套資源適配所有裝置而不做資源的更改是不可能 的,這點必須明白。沒有一種完美的適配方案,而我們所做的不過是盡量更完善,那如何找到一種行之有效的適配方案呢?在保持影象基本不變形的情況下我們可以 對第二種,第三種適配方案進行改進。

根據裝置解析度改變winsize的大小:

由這個思路,假如我們預設winsize為(640,960),先計算裝置解析度和設計解析度的寬比與高比

float scalex=framesize.width/designsize.width;

float scaley=framesize.height/designsize.height;

在 第三種方案基礎上進行改進,依舊選擇寬高比小的進行縮放,這裡選擇scaley,由於第三種方案會產生黑邊,而我們又無法利用黑邊,所以改進的方案就是把 黑邊利用上,那如何利用上呢?前面說過,黑邊是由於寬高比例不同造成的,這樣我們可以反過來思考,讓裝置解析度和設計解析度寬高比一致。所以在這種前提 下,我們得到了一種解決辦法,假設裝置兩者的寬高比一致的情況下,winsize的寬高為多少才合適,在本例中我們需要算出winsize的寬,計算方法 如下:

framesize.width/scaley;

將計算出來的寬和我們預設的設計解析度的高作為傳入的winsize的值,這樣我們就能把黑邊利用上了

peglview->setdesignresolutionsize(framesize.width/scaley,designsize.height,kresolutionshowall);

但執行的結果和kresolutionshowall似乎一樣,這是因為黑邊我們雖然已經可以利用了,但沒有顯示效果,這裡我們現在已經可以對黑邊進行填充了,效果如下:

Cocos2d x 螢幕適配

為了適應移動終端的各種解析度大小,各種螢幕寬高比,在 cocos2d x 當前穩定版 2.0.4 中,提供了相應的解決方案,以方便我們在設計遊戲時,能夠更好的適應不同的環境。而在設計遊戲之初,決定著我們螢幕適配的因素有哪些,簡而言之只有兩點 螢幕大小 和 寬高比。這兩個因素是如何影響遊戲的 螢幕大小...

cocos2dx 螢幕適配策略

cocos2dx的常用函式 cceglview sharedopenglview setdesignresolutionsize 設計解析度大小 即開發時為基準的螢幕解析度 cceglview sharedopenglview setframesize 設定win32模擬器的解析度 cceglvie...

cocos2d x 螢幕適配 策略

設計解析度 表示我們設計的解析度。可以這麼認為,如果將我們的程式放到這個解析度的裝置上,那麼我們的程式將完美顯示。五種適配方案 2 fixed height和fixed width根據螢幕解析度的寬 高 和設計分辨的寬 高 比例來修正設計解析度的高 寬 這兩種策略的轉換過程如圖9 3所示。圖9 3 ...