場景
,遊戲在場景之間的切換稱爲流程控制
。CCScene層
是場景之下的遊戲元素。CCLayer精靈
屬於層,是場景中的課件圖形。如主角。CCSprite節點
和渲染樹
。CCNode一旦創建起渲染樹,組織複雜的場景就變得十分簡單。咱們賦予每一個節點一系列屬性,包括節點相對於父節點的位置、旋轉角度、縮放比例、和變形參數等。咱們只須要考慮節點相對於父節點的屬性,就能夠建立複雜的對象或者動做。(這麼說的話,實現血條也就能夠用這個方法)函數
動做
和動畫
。動做:CCAction CCActionInterval CCActionInstant。動畫:幀。使用多個動畫幀建立動畫序列。 CCAnimation, 用幀動畫序列建立可做用於精靈的幀動畫。 CCAnimate###命名空間和類名稱### 咱們能夠發現USING_NS_CC-----<code>#define USING_NS_CC using namespace cocos2d</code>學習
###構造函數和初始化### Cocos2d-x中和C++有點區別:動畫
使用構造函數建立的對象有使用者負責釋放。使用工廠方法建立的對象則不須要。this
// example CCSprite *sprite = new CCSprite(); sprite->initWithFile("*.jpg"); // 第二種使用工廠方法 // example CCSprite* sprite = CCSprite::spriteWithFile("HelloWorld.png");//舊版本引擎 CCSprite* sprite = CCSprite::create("HelloWorld.png");//新版本引擎
<pre><code> shedule_selector(SELECTOR); menu_selector(SELECTOR); //usage CCMenuItemImage *pCloseItem = CCMenuItemImage::Create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback) ); </code></pre>spa
###單例### Cocos2d-x的遊戲控制器CCDirector是一個獨一無二的控制器,用於切換遊戲場景。不可能同時存在CCDirector的實例。指針
<pre><code> static CCDisplayLinkDirector s_SharedDirector; CCDirector* CCDirector::sharedDirector(void) { static bool s_bFirstUseDirector = true; if (s_bFirstUseDirector) { s_bFirstUseDirector = false; s_ShareDirector.init(); } return &s_ShareDirector; } CCDirector::sharedDirector()->replaceScene(newScene);//經過調用replaceScene()來切換到新場景。 </code></pre>code
##Cocos2d-x的只能內存管理技術##orm
實際上這跟Objective-c的風格一致對象
經過給每一個對象維護一個 引用計數器,記錄該對象當前被引用的次數。對象增長一次引用時,計數器加1。當引用計數爲0時,標誌着該對象的生命週期結束,自動觸發對象的回收釋放。(可是必須注意維護計數)生命週期
經過retainCount()方法得到對象當前的引用計數值。在對象經過構造函數建立的時候,該引用值被賦值爲1。在其它地方須要引用對象時,咱們會調用retain()方法,令其引用計數+1,表示獲取該對象的引用權;在引用結束的時候調用release()方法,令其引用計數-1,表示釋放該對象的引用權。
還有一個方法是autorelease(),起做用時將對象放入自動回收池(CCAutore-leasePool)。當回收池自身被釋放的視乎,他就會對池中的全部對象執行一次release()方法,再循環結束後釋放回收池。*因此,即便咱們沒有手工建立和釋放回收池,每一幀結束的時候,自動回收池中的對象也都會被執行一次release()方法。
<pre><code> fish = new CCSprite(); fish->init(); // 1 // CCLog("%d", fish->retainCount()); // 能夠獲得當前計數的值 fish->retain(); // 2 fish->release(); // 1 fish->autorelease(); // 1 </code></pre>
回收池管理器 CCPoolManager* 的push(),pop()操做:建立和釋放回收池。
<pre><code> CCPoolManage::sharedPoolManage()->push(); for(int i=0; i<n; i++) { CCString *dataItem = CCString::createWithFormat("%d", Data[i]); stringArray->addObject(dataItem); } CCPoolManage::sharedPoolManage()->pop(); </code></pre>