场景
,游戏在场景之间的切换称为流程控制
。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>