cocos2dX UI控件之CCLabelBMFont與CCLabelAtlas

嘿嘿, 我又回來了, 今天我們來看看UI控件裏面的CCLabelBMFontCCLabelAtlas 爲什麼有了CCLabelTTF之後我們還有學習這兩個呢, 上節課我們不是說了嘛, 效率問題, 當然, 還有一個肯定就是美觀了啊, CCLabelTTF只能使用系統字體哦, 好了, 現在我們正式開始進入CCLabelBMFont與CCLabelAtlas的學習


用法:

CCLabelBMFont::create("想要顯示的字符串", ".fnt的字符解析文件");

CCLabelAtlas::create("要顯示的字符串", "圖片文字", 單個字符的寬度, 單個字符的高度, '第一個字符');


既然是要用圖片創建, 那我們肯定得找圖片啊


最後一張圖片我們用在CCLabelAtlas

前面三個文件我們用在CCLabelBMFont, 當然那個plist文件我們可以不使用的, 但是是一起生成的所以我就一起復制過來了(我用的紅孩兒工具箱生成的, 很不錯的軟件, 還是免費的哦)

我們繼續來看用法:

CCLabelBMFont* pLabel = CCLabelBMFont::create("hello, world", "testfont.fnt");	//創建CCLabelBMFont
	pLabel->setPosition( ccp( visibleSize.width / 2, 50));
	this->addChild( pLabel);

	CCLabelAtlas* pLabel2 = CCLabelAtlas::create("12345", "testFont2.png", 25, 27, '1');	//創建CCLabelAtlas
	pLabel2->setPosition( ccp( visibleSize.width / 2, 100));
	this->addChild( pLabel2);


我們來看看顯示的效果:

(額, 由於字體是黑色的, 所以我加了張背景, 不要在意這些細節大笑)



首先我們來看CCLabelBMFont, 使用它我們需要兩個文件, 一個是.fnt的解析文件, 一個是.png對應的圖片文件, 我們可以打開.fnt文件看一下


我們可以看見.fnt裏面使用了剛剛那張.png的文件, 而且定義了每個字符對應的位置信息, 但是就因爲這樣, 所以我們不能指定字體的大小, 但是我們可以把它當成一個精靈(CCSprite), 用scale來縮放, CCLabelBMFont的用法是不是很簡單呢? 我們再來看看CCLabelAtlas, 這個相對於CCLabelbMFont要複雜一點, 但也只是相對而已.


先解釋一下參數, 當然, 第一個和第二個我就不解釋了, 大家都明白的( 旁白: 廢話還是這麼多), 我們來看後面三個分別指定單個字符的寬高和圖片的第一個字符的ASCII碼, 首先, 傳入的圖片被分成了指定寬高的小圖( 嗯, 話說應該是這樣吧) , 我們最後一個參數指定了開始字符的ASCII碼, 在圖片裏面字符都是按照ASCII碼排列的, 所以我們指定了寬高的小圖就能很輕易的取出


剛剛我們說了因爲這兩個的本質是圖片, 所以不能設置字號, 我們就只能把它當做CCSprite, 我們也看看是怎麼做的, 就當先預熱一下CCSprite部分了


CCSprite* fontSprite = (CCSprite*)pLabel->getChildByTag( 0);			//取出第一個字符
	CCActionInterval* scale = CCScaleTo::create( 2, 1.5f);					//設置在1.5秒的時間裏放大2倍
	CCActionInterval* rotate = CCRotateBy::create( 1.5, 30);				//設置在1.5秒的時間裏面旋轉30度
	CCSequence* seq = CCSequence::create(scale, rotate, NULL);				//插入到動畫序列
	fontSprite->runAction( seq);											//開始動畫

效果:

這段代碼看不明白也沒關係, 我們後面會詳細講解的, 寫這段代碼就是爲了讓大家看第一句, 如何將一個字符取出, 然後進行操作, 字符的存儲和數組是一樣的, 也是從0開始的, 要注意這一點, 嗯, 今天就先做到這裏吧, 順便吐槽一句:從今天開始, 每天都要加班啊, 真心悲催啊大哭


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章