cocos2dx筆記

The language of cocos2d-x: C++, Lua, JS
主要概念:應用、導演、場景、層、精靈、動畫、動作。
導演->場景->層->精靈。
Director->Scene->Layer->Sprite。

主要類:
CCObject:引用計數的功能。
CCPoolManager:單體類,負責管理多個垃圾回收器CCAutoreleasePool。
CCAutoreleasePool:垃圾回收器。
CCApplication:主類,在main函數中需要定義一個CCApplicatian對象,執行run方法。
CCDirector:管理場景和調度。
-->初始化:創建一個CCScheduler調度器、CCActionManager對象管理器、CCTouchDispatcher觸摸消息分配器、CCKeypadDispatcher鍵盤消息分配器、CCAccelerometer加速器,並且通過CCPoolManager創建一個垃圾回收器。
-->在mainLoop方法中主要做兩件事:渲染場景、通過CCPoolManager釋放和清理當前的垃圾回收器。
-->導演類的drawScene方法中,主要做以下幾件事:
---->第一:通過調度器刷新執行所有實現了update方法的CCNode對象。
---->第二:設置當前的Scene,執行當前Scene的onEnter和onExit方法。
---->第三:通過visit方法開始遞歸渲染當前的Scene。
-->Director提供了一種擴展接口:setNotificationNode,可以通過這個方法設置一個非Scene對象到CCDirector中,由CCDirector在主循環方法中遞歸調度。
-->顯示FPS、狀態等信息。

常用的常量、工具
cocoa\CCGeometry.h  定義了CCPoint、CCSize、CCRect
const CCPoint CCPointZero=CCPointMake(0,0);
const CCSize CCSizeZero=CCSizeMake(0,0);
const CCRect CCRectZero=CCRectMake(0,0,0,0);

NS_CC_BEGIN  //這是namespace cocos2d {
NS_CC_END  //這是 } !!!!
USING_NS_CC;  //這是using namespace cocos2d;這可以是常用宏。

CC_SAFE_DELETE(p);  //當p不爲null,deletep並且將p賦值爲NULL
CC_SAFE_DELETE_ARRAY(p); //delete[] p
CC_SAFE_FREE(p); //free p
CC_SAFE_RELEASE(p);  //當p不爲null時,p->release()
CC_SAFE_RELEASE_NULL(p); //當p不爲null,p->release() 並且將p賦值爲NULL
CC_SAFE_RETAIN(p);  //當p不爲null,p->retain()

CCRANDOM_0_1();  //產生0到1之間的隨機浮點數
CCRANDOM_MINUS1_1();  //產生-1到1之間的隨機浮點數

support\CCPointExtension.h
取中點
ccpMidpoint(v1, v2);  //等價ccp( (v1.x + v2.x) / 2, (v1.y + v2.y) / 2 );
點乘、叉乘、投影
ccpDot(v1, v2);  //等價 v1.x * v2.x + v1.y * v2.y;
ccpCross(v1, v2);  //等價 v1.x * v2.y - v1.y * v2.x;
ccpProject(v1, v2);  //返回的是向量v1在向量v2上的投影向量

ccpLength(v);  //返回向量v的長度,即點v到原點的距離
ccpLengthSQ(v);  //返回向量v的長度的平方,即點v到原點的距離的平方
ccpDistance(v1,v2); //返回點v1到點v2的距離
ccpDistanceSQ(v1,v2); //返回點v1到點v2的距離的平方
ccpNormalize(v);  //返回v的標準化向量,就是長度爲1

cocos2dx的調度機制
(1)通過註冊scheduler方法
(2)通過實現CCObject::update方法,並且執行CCNode::scheduleUpdate方法

cocos2dx的Action
1、瞬時動作
放置 setPosition
隱藏/顯示 setVisible
2、延時動作
延時動作就是指動作的完成需要一定時間。因此actionWithDuration是延時動作執行的第一個參數,延時動作的共同基類是CCIntervalAction。
cocos2dx提供一下瞬時動作(函數命名規則是:XxxxTo:意味着運動到指定的位置,XxxxBy:意味着運動到按照指定的x、y增量的位置。)
移動到 - CCMoveTo
移動 - CCMoveBy
跳躍到 - CCJumpTo  設置終點位置和跳躍的高度和次數。
跳躍 - CCJumpBy  設置終點位置和跳躍的高度和次數。
貝塞爾 - CCBezierBy  支持3次貝塞爾曲線:p0-起點,p1-起點切線方向,p2-終點切線方向,p3-終點。
放大到 - CCScaleTo  設置放大倍數,是浮點
放大 - CCScaleBy
旋轉到 - CCRotateTo
旋轉 - CCRotateBy
閃爍 - CCBlink  設定閃爍次數
色調變化到 - CCTintTo
色調變化 - CCTintBy
變暗到 - CCFadeTo
由無變亮 - CCFadeIn
由亮變無 - CCFadeOut
3、組合動作
序列 - CCSequence  線序排列若干個動作,然後按先後次序逐個執行。
同步 - Spawn  同時並列執行若干個動作,但要求動作都必須是可以同時執行的。
重複有限次數 - Repeate
反動作 - Reverse  反向執行某個動作,支持針對動作序列的反動作序列。
動畫 - Animation  讓精靈自身連續執行一段影像,形成模擬運動的效果:行走時的精靈狀態、打鬥時的狀態
無限重複 - RepeatForever  無限期執行某個動作或動作序列,直到被停止。
4、速度變化
EaseIn  由慢至快
EaseOut  由快至慢
EaseInOut  慢到快到慢
EaseSineIn  由慢至快
EaseSineOut  由快至慢
EaseSineInOut  慢到快到慢
EaseExponentialIn  由慢至極快
EaseExponentialOut  由極快至慢
EaseExponentialInOut  由慢至極快再由極快至慢
Speed  人工設定速度,還可以通過SetSpeed不斷調整。
5、擴展動作
延時動作 - Delay  比如在動作序列中增加一個時間

場景切換方式
CCDirector::replaceScene方法
CCTransitionFade,漸隱效果
CCTransitionFadeTR,碎片效果
CCTransitionJumpZoom,跳動效果
CCTransitionMoveInL,從左向右移動
CCTransitionPageTurn,翻頁效果
CCTransitionRadialCCW,鐘擺效果
CCTransitionRotoZoom,渦輪效果
CCTransitionSceneOriented,
CCTransitionShrinkGrow,漸遠效果
CCTransitionSlideInL,左移
CCTransitionSplitCols,上下移動
CCTransitionTurnOffTiles,
CCTransitionScene:CCScene,基類

CCRotoZoomTransition,旋轉縮小切換
CCJumpZoomTransition,縮小後跳躍切換
CCSlideInLTransition,從左向右切換
CCSlideInRTransition,從右向左切換
CCSlideInTTransition,從上向下切換
CCSlideInBTransition,從下向上切換
CCShrinkGrowTransition,逐漸縮小切換
CCFlipXTransition,以x中間爲軸平面式旋轉切換
CCFlipYTransition,以y中間爲軸平面式旋轉切換
CCFlipAngularTransition,側翻式旋轉切換
CCZoomFlipXTransition,縮小後x爲軸旋轉切換
CCZoomFlipYTransition,縮小後y爲軸旋轉切換
CCZoomFlipAngularTransition,縮小側翻式旋轉切換
CCFadeTransition,逐漸變暗切換
CCCrossFadeTransition,逐漸變暗切換2
CCTurnOffTilesTransition,隨機方塊覆蓋切換
CCSplitColsTransition,三條上下分開切換
CCSplitRowsTransition,三條左右分開切換
CCFadeTRTransition,小方塊大方塊式切換 左下到右上
CCFadeBLTransition,小方塊大方塊式切換 右上到左下
CCFadeUpTransition,百葉窗從下向上
CCFadeDownTransition,百葉窗從上向下
CCTransitionRotoZoom:CCTransitionScene,旋轉進入
CCTransitionJumpZoom:CCTransitionScene,跳動進入
CCTransitionMoveInL:CCTransitionScene<CCTransitionEaseScene>,從左側進入
CCTransitionMoveInR:CCTransitionMoveInL,從右側進入
CCTransitionMoveInT:CCTransitionMoveInL,從頂部進入
CCTransitionMoveInB:CCTransitionMoveInL,從底部進入
CCTransitionSlideInL:CCTransitionScene<CCTransitionEaseScene>,從左側滑入
CCTransitionSlideInR:CCTransitionSlideInL,從右側滑入
CCTransitionSlideInB:CCTransitionSlideInL,從頂部滑入
CCTransitionSlideInT:CCTransitionSlideInL,從底部滑入
CCTransitionShrinkGrow:CCTransitionScene<CCTransitionEaseScene>,交替進入
CCTransitionFlipX:CCTransitionSceneOriented,x軸翻入(左右)
CCTransitionFlipY:CCTransitionSceneOriented,y軸翻入(上下)
CCTransitionFlipAngular:CCTransitionSceneOriented,左上右下軸翻入
CCTransitionZoomFlipX:CCTransitionSceneOriented,x軸翻入放大縮小效果(左右)
CCTransitionZoomFlipY:CCTransitionSceneOriented,y軸翻入放大縮小效果(上下)
CCTransitionZoomFlipAngular:CCTransitionSceneOriented,左上右下軸翻入放大縮小效果
CCTransitionFade:CCTransitionScene,變暗變亮進入
CCTransitionCrossFade:CCTransitionScene,漸變進入
CCTransitionTurnOffTiles:CCTransitionScene<CCTransitionEaseScene>,小方格消失進入
CCTransitionSplitCols:CCTransitionScene<CCEaseScene>,豎條切換進入
CCTransitionSplitRows:CCTransitionSplitCols,橫條切換進入
CCTransitionFadeTR:CCTransitionScene<CCTransitionEaseScene>,小方格右上角顯示進入
CCTransitionFadeBL:CCTransitionFadeTR,小方格左下角顯示進入
CCTransitionFadeUp:CCTransitionFadeTR,橫條向上顯示進入
CCTransitionFadeDown:CCTransitionFadeTR,橫條向下顯示進入

cocos2dx粒子系統
1、代碼設置參數
2、導入plist屬性列表文件的方式來配置
模式A:重心模式(粒子發射出來後悔向重心方向做拋物運動)
模式B:輻射模式(粒子發射出來後悔向四周運動)
粒子系統參數:
-->系統參數:
System lifetime  粒子系統生命週期,到期消失
Emission  放射速度
Particle lifetime  粒子生命週期,在min和max中選取
texture  圖片
Blend 模式:additive(添加模式,將粒子之間的顏色進行疊加,加強)、blend(混合模式)
混合模式可以得到多層複合的圖像效果。
利用混合模式可以改變兩個或兩個以上重疊對象的透明度或者顏色相互關係

移動參數
Direction  方向
Spread  向四周傳播密度
speed  移動速度
Gravity  受重力參數
radial acceleration  徑向加速度,直射到四周範圍
tangential acceleration  切向加速度,旋轉放射弧度

粒子表現
Particle size  粒子大小  start var end
Particle spanning  粒子自旋轉  start var end
Particle alpha  粒子alpha值  start var end
Particle clore  粒子顏色  start var end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章