三種顯示文字的類
CCLabelTTF, CCLabelAtlas, CCLabelBMFont
CCLabelTTF:使用系統字體每個字符串會生成一個紋理,顯示效率比較低下。適合無變化的文字
CCLabelAtlas: 使用NodeAtlas優化渲染,適合經常變化的數字,比如分數,金錢。
CCLabelBMFont: 使用CCSpriteBatchNode,很靈活,每個字符都是一個精靈,可以對每一個字符進行操作。
CCLabelAtlas *lable = CClabelAtlas::create("12434", "labelatlasing.png", 24, 32, '0'); 根據啊思科碼,順序不能變
CCLabelBMFont *label = CCLabelBMFont::create("abc", "bitmapFontTest.fnt"); 根據圖片來弄字體,原理是批處理精靈
CCArray *arr = label->getChildren(); 獲取所有字符
CCSprite *spriteA = (CCSprite *)arr->objectAtIndex(0); 0表示第一個字符
spriteA->setRotation(90); 每個字符都能進行單獨的操作
PS:直接使用圖片,將文字畫在圖片上(局限: 分辨率、更換麻煩等)
CCSpriteBatchNode也是一個容器,但是他只能包容CCSprite對象,而且要求這些精靈來自同一個紋理。
CCSpriteBatchNode *batch = CCSpriteBatchNode::create("CloseNormal.png");
addChild(batch);
CCSprite *sprite = CCSprite::createWithTexture(batch->getTexture());
batch->addChild(sprite);
C++的4種cast
C++引入cast是為了減少因類型轉換造成的錯誤,能在編譯、運行時期檢查轉換問題
static_cast 是在編譯時期檢查,cast兩邊要求有一邊可以做隱式轉化,才能用static_cast
dynamic_cast 是在運行時期檢查,用於具有虛函數的父類和子類之間的類型轉換
const_cast 把常量轉換為非常量
reinterpret_cast 這個叫做重解釋,沒有什麼用。