Cocos2d-x UI開發(fā)之文本類使用實例
更新時間:2014年09月11日 09:46:32 作者:皂莢花
這篇文章主要介紹了Cocos2d-x學習筆記之文本類,文本類是UI開發(fā)中經(jīng)常使用的,本文用詳細的代碼注釋講解了文本類的使用,需要的朋友可以參考下
cocos2d-x中有三個文本類,用來在屏幕上顯示文字,這三個類分別是CCLabelTTF、CCLabelBMFont、CCLabelAtlas。這三個類都繼承自抽象類CCLabelProtocol,所以具有了setString()改變文本信息的方法和getString()獲得文本信息的方法。
bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); CCSize size = CCSizeMake(CCDirector::sharedDirector()->getWinSize().width/3,320); //1、CCLabelTTF的定義如下,第一個是要顯示的文字,第二個是字體,第三個是字體的大小,第四個是文字標簽的尺寸 //文字標簽太小就不能完全的顯示字體,太大就浪費了空間,第五個是水平對齊方式,第六個是垂直對齊方式 /*static CCLabelTTF * create (const char *string, const char *fontName, float fontSize, const CCSize &dimensions, CCTextAlignment hAlignment, CCVerticalTextAlignment vAlignment)*/ //2、CCTextAlignment的值可以是:kCCTextAlignmentLeft kCCTextAlignmentCenter kCCTextAlignmentRight //3、CCVerticalTextAlignment的值可以是:kCCVerticalTextAlignmentTop kCCVerticalTextAlignmentCenter kCCVerticalTextAlignmentBottom //4、一般情況下后三個參數(shù)是不用的,只需要記住前三個就ok了 //5、CCLabelTTF繼承自CCSprite(就是一張繪制著文字的紋理圖片),所以精靈具有的所有功能CCLabelTTF都可以有,包括旋轉(zhuǎn),縮放什么的 //6、這三個字體標簽都可以通過setString()來改變標簽中的內(nèi)容,但是CCLabelTTF一改變標簽中的內(nèi)容就會重新繪制,浪費了時間和空間,所以在創(chuàng)建了文字就不改變內(nèi)容的前提下我們使用它 CCLabelTTF * ttf = CCLabelTTF::create("Hello Cocos2d-x","Arial",32,size,kCCTextAlignmentLeft,kCCVerticalTextAlignmentTop); //CCPoint()和ccp(),CCPointMake()的用法一樣,功能相同。 ttf->setPosition(CCPoint(240,160)); this->addChild(ttf); /*首先拷貝E:\cocos2d-x-2.2\cocos2d-x-2.2\samples\Cpp\TestCpp\Resources下的文件fps_images.png到自己 項目的resource目錄下,打開這個.png文件看到的是. / 0 1 2 3 4 5 6 7 8 9這些字體就是我們要顯示的字體*/ //解釋一下CCLabelAtlas各個參數(shù)的含義 //第一個參數(shù)是我們要顯示的內(nèi)容,這個內(nèi)容必須包含在我們剛才打開的那張圖片中,第二個參數(shù)就是資源的名稱了 //第三個參數(shù)是該資源中每個字體的大小,即寬度和高度,最后一個參數(shù)是這些字體的起始字符 //解釋一下它的顯示原理,我們要顯示的是2014/2/10,于是程序找到了資源文件fps_images.png,定位到起始字符 //然后根據(jù)2的assic碼,和起始字符的assic碼相減找到偏移的位置,然后根據(jù)寬度和高度取出2, //所以資源中的字體的assic碼必須是連續(xù)的 //CCLabelAtlas一般使用在顯示經(jīng)常變化的數(shù)字的時候比較快,效率高,就像我們顯示的那個幀率,就是用的CCLabelAtlas CCLabelAtlas * atlas = CCLabelAtlas::create("2014/2/10","fps_images.png",12,32,'.'); atlas->setPosition(CCPointMake(70,100)); this->addChild(atlas); //不斷setString()也只需渲染一次,實現(xiàn)秒表功能的時候經(jīng)常用到 atlas->setString("2014/2/11"); //CCLabelBMFont需要我們使用到資源文件,這些資源文件包含了我們要使用的文字,網(wǎng)上有專門的工具可以制作這些 //我們需要名稱相同的倆個文件,一個以.fnt結(jié)尾,就是我們的第二個參數(shù),一個以.png結(jié)尾 //拷貝E:\cocos2d-x-2.2\cocos2d-x-2.2\samples\Cpp\TestCpp\Resources\fonts到我們的resource文件夾 //第一個參數(shù)就是我們要顯示的內(nèi)容,這個內(nèi)容在那個文件中必須得有,但是中文字體不知道怎么回事,不能顯示,留下以后研究吧 //這個文本類主要是來豐富我們的字體的,可以利用工具做一些好看的字體顯示在屏幕上 //2014里邊的每個字體可以看做是單獨的一個精靈,可以通過getChildByTag()方法獲取 CCLabelBMFont * font = CCLabelBMFont::create("2014","bitmapFontChinese.fnt"); font->setPosition(ccp(160,160)); this->addChild(font); bRet = true; } while (0); return bRet; }
相關(guān)文章
VC編程控件類HTControl之CHTGDIManager GDI資源管理類用法解析
這篇文章主要介紹了VC編程控件類HTControl之CHTGDIManager GDI資源管理類用法解析,需要的朋友可以參考下2014-08-08關(guān)于C/C++中可變參數(shù)的詳細介紹(va_list,va_start,va_arg,va_end)
可變參數(shù)的函數(shù)原理其實很簡單,而va系列是以宏定義來定義的,實現(xiàn)跟堆棧相關(guān).我們寫一個可變函數(shù)的C函數(shù)時,有利也有弊,所以在不必要的場合,我們無需用到可變參數(shù)。如果在C++里,我們應(yīng)該利用C++的多態(tài)性來實現(xiàn)可變參數(shù)的功能,盡量避免用C語言的方式來實現(xiàn)2013-10-10C++實現(xiàn)LeetCode(112.二叉樹的路徑和)
這篇文章主要介紹了C++實現(xiàn)LeetCode(112.二叉樹的路徑和),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07