Cocos2d X遊戲開發 二

2021-08-01 22:54:31 字數 2124 閱讀 2691

cocos2d-x

遊戲開發

程式啟動執行流程:

系統設定

視窗解析度

//設定模擬器窗體大小

glview->setframesize(360, 640);

設計解析度(可視區域)

中也有個設定設計解析度的函式。該函式是設定了我們遊戲設計時候的解析度,也就是可視區域的大小,也就是說設計者初衷的遊戲可視區域的解析度螢幕大小。

但是對於每個使用者來說,他們使用的裝置不一定是(480/320)的,比如手機有大有小。

而後面的resolutionpolicy::show_all,意思是按照原比例(480/320)進行放縮以適配實際螢幕大小。

//設定解析度

glview->setdesignresolutionsize(720, 1280,resolutionpolicy::show_all);

五種適配模式

setframesize()是設定了視窗大小(即螢幕的實際大小),而這個引數只是為了我們開發時作為模擬參照,在實際手機上執行時,手機的螢幕大小是我們無法設定的。

而螢幕適配的關鍵在於setdesignresolutionsize(),通過它來設定可視區域的解析度以及螢幕適配模式。該函式的前兩個引數為解析度(即螢幕長寬比例),而最後乙個引數則是適配的模式。

適配模式

(長寬中小的鋪滿螢幕,大的超出螢幕)

長寬中大的鋪滿螢幕,小的留有黑邊)

計算方法

假設:螢幕解析度(fwidth,fheight) ; 設計解析度(dwidth,dheight)。

放縮因子:k1 = fwidth/dwidth ; k2 = fheight/dheight。

則適配後的解析度大小如下:

背景圖自適應:

注釋掉以下**:

// 設定設計解決方案

glview->setdesignresolutionsize(designresolutionsize.width,designresolutionsize.height,resolutionpolicy::no_border);

autoframesize=glview->getframesize();

// 如果框架的高度大於中等大小的高度。

if(framesize.height> mediumresolutionsize.height)

// 如果框架的高度大於小尺寸的高度。

elseif(framesize.height> smallresolutionsize.height)

// 如果框架的高度小於中等大小的高度。

else

//設定模擬器窗體大小

glview->setframesize(360, 640);

//設定解析度

glview->setdesignresolutionsize(720, 1280,resolutionpolicy::show_all);

在startscene.cpp中設定背景圖

//函式作用是設定錨點,也就是二位座標系的起點

//錨點是按照百分比設定的,0—1,0.5,0.5則表示中心點

sprite->setanchorpoint(point(0.5, 0.5));

sprite->setposition(vec2(visiblesize.width/ 2 + origin.x,visiblesize.height/ 2 +origin.y));

//新增精靈到窗體

this->addchild(sprite, 0);

執行結果:

cocos2d x遊戲開發之動畫

mygame.h中宣告動畫函式 class mygame public cocos2d layer bool mygame init return true 注意 若按鈕事件中包含切換場景事件,則需要在按鈕事件中新增schedule函式,否則切換場景後,動畫還來不及生成,再次點選按鈕出發按鈕事件,則...

cocos2d x 遊戲優化方案

優化的方案 引擎底層優化 紋理優化 渲染優化 資源快取 記憶體優化.紋理優化 cocos2d x 底層是opengl es實現的。對於圖案片載入的記憶體是2的冪次方。使用的是100 128 會被轉為128 128。如此浪費一定的空間。色深優化 png a8r8g8b8 a1r5g5b5 argb44...

cocos2dx遊戲優化方向

優化方向 一 引擎底層優化 cocos2dx版本選擇 二 紋理優化 png格式,乙個畫素4位元組 1.二的冪次方拼圖 由於底層的opengl是按二的冪次方申請記憶體的,然後再吧這個存在記憶體中,如果 乙個480 480 4的要存入記憶體,那麼它的實際占用記憶體是512 512 4。所以為節約記憶體,...