cocos2d-x中的一些概念

cocos2d-x中有很多概念,下面就對這些概念做一下總結:
導演類
導演類CCDirector是cocos2d-x中一個非常重要的類,它是一個抽象類,用於管理場景對象,採用單例設計模式,在整個工程中只有一個實例對象。由於是單例模式能夠保存一致的配置信息,便於管理場景對象
主要完成的工作如下:
初始化遊戲和銷燬遊戲
管理調度場景
調整設置openGL信息
獲取設置遊戲的相關信息

CCDirector * pDirector = CCDirector::sharedDirector();  //得到一個導演類,採用的是單例的模式獲取

CCDirector需要綁定一個OpenGL視圖,將導演類所管理的場景繪製到綁定的OpenGL視圖上。x引擎提供了CCEGLView,同樣採用了單例模式。先拿到一個CCEGLView,然後將導演類和CCEGLView綁定。

CCEGLView *pView = CCEGLView::sharedOpenGLView();  
pDirector->setOpenGLView(pView); 
pDirector->setDisplayStats(true);   //開啓FPS顯示功能
pDirector->setAnimationInterval(1.0/60);  //設置每秒鐘的幀率
CCSize size = pDirector->getWinSize();  //獲取屏幕大小

場景類:
Scene場景也是cocos2dx中必不可少的元素,遊戲中通常我們需要構建不同的場景(至少一個),遊戲裏關卡、版塊的切換也就是一個一個場景的切換,就像在電影中變換舞臺和場地一樣。同時場景是層的容器,包含了所有需要顯示的遊戲元素。
一些函數的用法

// 運行一個場景  
void runWithScene(CCScene *pScene);  
// 把當前場景壓入棧中,使其進入等待狀態  
void pushScene(CCScene *pScene);  
// 從棧頂彈出一個場景對象  
void popScene(void);  
// 從棧中彈出所有場景對象,僅剩下根場景對象  
void popToRootScene(void);  
// 替換成新的場景對象  
void replaceScene(CCScene *pScene);  
// 結束執行,釋放當前資源  
void end(void);  
// 暫停運行的場景  
void pause(void);  
// 恢復運行的場景  
void resume(void);  
// 繪製場景內容  
void drawScene(void); 

層:
Layer是處理玩家事件響應的Node子類。與場景不同,層通常包含的是直接在屏幕上呈現的內容,並且可以接受用戶的輸入事件,包括觸摸,加速度計和鍵盤輸入等。例如橫屏打鬥遊戲,人物向前行走的過程中,背景會不斷地滾動,但是遊戲的控制按鈕永遠在固定的位置不變。要向場景添加層,我們可以使用addChild方法。

addChild( Node * child ) //child是節點,通常的節點就是層
addChild( Node *child, int zOrder ) //zOrder指層與層之間的順序,
addChild( Node *child, int zOrder, int tag )  //tag是元素的表示號碼,給子節點設置了tag值,就可以在父節點中通過tag值找到子節點
auto layer = LayerColor::create(Color4B(0, 128, 128, 255));  
layer->setContentSize(CCSizeMake(120, 80));  
layer->setPosition(Point(50, 50));  
addChild(layer, 10);  
auto layer1 = LayerColor::create(Color4B(128, 0, 128, 255));  
layer1->setContentSize(CCSizeMake(120, 80));  
layer1->setPosition(Point(100, 80));  
addChild(layer1, 20);  

精靈:
Cocos2d中的精靈和其他遊戲引擎中的精靈相似,它可以移動,旋轉,縮放,執行動畫,並接受其他轉換。Cocos2dx的Sprite由Texure,frame和animation組成,由openes負責渲染。
創建精靈:

auto sprite = Sprite::create("HelloWorld.png");        
this->addChild(sprite,0);  //直接創建
auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()->addImage("HelloWorld.png"));  
this->addChild(sprite1, 0);  //使用文理來創建精靈
auto sprite2=Sprite::createWithSpriteFrameName("HelloWorld.png");    
this->addChild(sprite2, 0); //用精靈幀來創建精靈
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章