IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
一.簡介
在游戲中,經(jīng)常需要添加文字標簽。游戲的介紹、游戲中的提示和對話等都需要用到文字。在游戲中,除了系統(tǒng)字體,還有很多地方需要使用由美術(shù)人員制作的紋理圖片表現(xiàn)的文字。從代碼的角度來看,它們與一般的紋理圖片沒有區(qū)別,就是一張包含文字信息的圖片,此類文字經(jīng)常被用來當作游戲的標題或者商標。Cocos2d-x為開發(fā)者提供了專門用于繪制文字的類。
Cocos2d-x提供了強大的文本渲染功能,既可以直接使用系統(tǒng)字體,也可以自己渲染字體,文本渲染類的繼承關(guān)系如下圖所示:
文本渲染類的繼承關(guān)系圖
上圖顯示了用于處理文字的4個類:Label、LabelAtlas、LabelBMFont和LabelTTF。這4個類都是通過不同的方式來顯示文字的。它們都繼承自LabelProtocol類。它們的類名中都有一個單詞Label,在Cocos2d-x中,Label代表文字標簽的意思,也就是說這些類是專門用于顯示文字的對象。另外,因為它們都有一個共同的父類Node,所以文字標簽與之前學(xué)習(xí)的圖層或者精靈等都屬于顯示游戲內(nèi)容的對象。在實際游戲開發(fā)中,讀者可以按照需要選擇一種或多種方式顯示文字。
二.TTF類型標簽LabelTTF
LabelTTF類是通過TTF字體來實現(xiàn)的字體標簽。TTF(True Type Fonts)格式是一種在計算機領(lǐng)域通用的字體格式,可以說是使用最為廣泛的文字顯示格式,比如在Windows操作系統(tǒng)中,就是通過TTF格式字體顯示文字的。這種類型字體文件的擴展名是.ttf。它的繼承關(guān)系如下圖所示:
LabelTTF的繼承關(guān)系
從上圖可以看出,LabelTTF的另一個父類就是Node。這說明開發(fā)者完全可以將LabelTTF的對象當作節(jié)點對象來使用,可以執(zhí)行各種動作以及實現(xiàn)各種變化效果。
LabelTTF類標簽對象的特點如下:
l 任何一種TTF字體都包含了某種語言當中的所有字母以及符號,開發(fā)者可以隨機調(diào)整字體的大小、顏色以及樣式。
l 因為TTF標準如今已經(jīng)得到了普及,所以在很多操作系統(tǒng)中已經(jīng)提供了多種字體,開發(fā)者可以直接使用。
l 渲染速度相對較慢,所以通常用于顯示一些靜態(tài)的標簽和純文本。
LabelTTF標簽類為開發(fā)者提供了一個create函數(shù)專門用于創(chuàng)建一個LabelTTF對象,具體聲明如下:
//創(chuàng)建LabelTTF標簽對象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標簽尺寸大小、文字水平對齊方式、文字豎直對齊方式
static LabelTTF* create(const std::string& string, const std::string& fontName, float fontSize, const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::CENTER, TextVAlignment vAlignment = TextVAlignment::TOP)
其中第一個參數(shù)是將要顯示的文字內(nèi)容。第二個參數(shù)是所用字體的名稱。第三個參數(shù)是字體的大小。第四個參數(shù)是字體顯示標簽的尺寸大小,過大會浪費內(nèi)存空間,過小則不能顯示完整的內(nèi)容。最后兩個參數(shù)是文字繪制時的對齊方式,不同的對齊方式將會導(dǎo)致繪制的文字內(nèi)容產(chǎn)生位置的變化。水平對齊方式分為左對齊、居中對齊和右對齊。豎直對齊方式分為頂部對齊、中間對齊和底部對齊。接下來通過一個案例來理解LabelTTF類在游戲開發(fā)中的具體使用方法。
三.測試LabelTTF類
新建一個項目名為LabelTTFTest,并修改HelloWorldScene.cpp文件中的init函數(shù),具體代碼如下:
//場景初始化方法
Bool HelloWorld::init()
{
//調(diào)用父類init函數(shù)
If(!Layer::init())
{
Return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//創(chuàng)建TTF標簽對象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小
auto label1 = LabelTTF::create(“top”, “Font/cour.ttf”, 64);
label1->setPosition(visibleSize.width/2, visibleSize.height/2+200);
this->addChild(label1);
//創(chuàng)建TTF標簽對象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標簽大小、文字水平對齊方式
auto label2 = LabelTTF::create(“center”, “Font/msyh.ttf”, 64, Size(visibleSize.width/3, 200), TextHAlignment::LEFT);
label2->setPosition(visibleSize.width/2, visibleSize.height/2);
this->addChild(label2);
//創(chuàng)建TTF標簽對象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標簽大小、文字水平對齊方式、文字豎直對齊方式
auto label3 = LabelTTF::create(“bottom”, “Font/consola.ttf”, 64, Size(visibleSize.width/3, 200), TextHAlignment::RIGHT, TextHAlignment::CENTER);
label3->setPosition(visibleSize.width/2, visibleSize.height/2-200);
this->addChild(label3);
}
init函數(shù)分別演示了使用三種create函數(shù)創(chuàng)建TTF標簽對象。運行項目,顯示如下:
LabelTTF的字體渲染效果
四.總結(jié)
本節(jié)課介紹了Cocos2d-x中最常用的字體繪制方法-LabelTTF類。
LabelTTF類專門用于繪制TTF(True Type Fonts)字體,這種類型的字體現(xiàn)在非常普及,游戲中絕大多數(shù)的文字都是使用LabelTTF繪制的。但是由于其渲染速度相對較慢,所以通常用于顯示游戲中的一些靜態(tài)的標簽和純文本。
LabelTTF的幾種不同構(gòu)造函數(shù)可以允許開發(fā)者在創(chuàng)建TTF字體時指定字體文件路徑、文字大小、對齊方式等參數(shù),同時也可以使用setPosition函數(shù)來設(shè)置該文字在屏幕坐標系下的顯示位置。
更多內(nèi)容
>>本文地址:http://hqfphsz.com/zhuanye/2022/72179.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?