Cocos2dx-C++ 4.x
- 什么是Node類
- Node類詳情
- Node類的源檔案目錄
- Node類的一些常用屬性
- 創建Node物件
- 一些設定Node屬性的常用方法
- 偷懶宏: CREATE_FUNC
什么是Node類
Node類是Cocos2dx的基類,像游戲中的 場景類、精靈類、文本類、選單類、層類 等都是繼承自Node,
Node類詳情
Node類的源檔案目錄
Node類的定義檔案目錄:Cocos2dx根目錄\cocos2d\cocos\2d\CCNode.cpp
Node類的檔案宣告目錄:Cocos2dx根目錄\cocos2d\cocos\2d\CCNode.h
Node類的一些常用屬性
Vector<Node *> _children; ///< 存放子元素的陣列
int _tag; //元素標識,使用一個 int 來標識這個Node
std::string _name; //元素名稱,使用一個 string 來標識這個Node
size_t _hashOfName; //_name的哈希值,用于提升getChildByName的查找速度
Size _contentSize; //元素的大小
Vec2 _position; //元素的位置
float _positionZ; // OpenGL渲染該元素的先后順序
Vec2 _anchorPoint; //元素的錨點
float _rotationX; ///< 沿x軸旋轉
float _rotationY; ///< 沿y軸旋轉
// 旋轉Z被分解為兩部分來模擬影片的傾斜
float _rotationZ_X; ///< x部分
float _rotationZ_Y; ///< y部分
//縮放
float _scaleX; ///< scaling factor on x-axis
float _scaleY; ///< scaling factor on y-axis
float _scaleZ; ///< scaling factor on z-axis
bool _visible; //元素是否被顯示
創建Node物件
Cocos2dx 對c++的記憶體機制進行了封裝,不使用 new 關鍵字來創建物件,而是使用 Node::create() 方法,
auto node = Node:create();//創建Node物件
一些設定Node屬性的常用方法
就簡單寫幾個,基本上所有屬性都能夠通過方法去設定,更多的就看檔案或者直接看原始碼,
node->setTag();
node->setName();
node->setPosition();
偷懶宏: CREATE_FUNC
該宏用來為一個類似CCLayer類的特定的類增加一個create函式,
那create函式里做了什么呢?
它執行了類的建構式,執行了init()初始化函式,
最后又設定創建出的物件為自動釋放記憶體,
這樣其他人在使用這個類的時候,只要是用create()函式創建出來的物件就不用費心去管理釋放記憶體了,它封裝了c++的記憶體管理機制,
該宏所在的檔案路徑:
專案根目錄\cocos2d\cocos\platform\CCPlatformMacros.h
該宏的代碼:
/** @def CREATE_FUNC(__TYPE__)
* Define a create function for a specific type, such as Layer.
*
* @param __TYPE__ class type to add create(), such as Layer.
*/
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
__TYPE__ *pRet = new(std::nothrow) __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = nullptr; \
return nullptr; \
} \
}
比如我們創建一個場景類時,我們在宣告的時候就需要用到這個宏定義來為類添加一個create方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/272500.html
標籤:其他
上一篇:關于axios封裝遇到的問題
