在Cocos2d-x中要顯示文字就需要用到Label控件。在3.x版本的Cocos2d中,捨棄了之前版本所使用的LabelTTF、LabelAtlas、LabelBMFont 3個用於顯示文字的類,而使用一個新類Label取代。可想而知,Label實際上就是對之前3個類進行重新封裝並統一渲染。
提示:實際上老版本的內容在3.x版本中依然是可以使用的。
下面是在Cocos2d-x中顯示文字的一個例子,具體完整項目可在源文件本章目錄下找到項目ChapterThree01查看。
【範例3-1 在Cocos2d-x中顯示文字】?
auto label1 = Label::create("this is the first label","Arial",36, Size::ZERO,TextHAlignment::LEFT,TextVAlignment::TOP); //創建標籤 label1->setPosition(210, 310); //設置標籤位置 addChild(label1); //加入到場景中 //通過TTFConfig在標籤中使用自定義字體 TTFConfig ttfconfig("fonts/chunkmuffinhollowwide.ttf", 36); //創建TTFConfig對象 auto label2 = Label::createWithTTF(ttfconfig,"this is the second label"); //創建標籤 label2->setPosition(270,250); //設置標籤位置 addChild(label2); //將標籤加入到場景中 //使用createWithTTF方法創建使用自定義字體的標籤 auto label3 = Label::createWithTTF("this is the third label","fonts/Marker Felt.ttf",36); label3->setPosition(200, 190); addChild(label3); //將標籤加入到場景中 //爲標籤加入陰影和邊框效果 auto label4 = Label::createWithTTF("this is the fourth label", "fonts/Marker Felt.ttf", 36); label4->setPosition(280,130); //設置標籤位置 label4->enableShadow(Color4B::GREEN, Size(5, 5)); //設置陰影效果 label4->enableOutline(Color4B::RED, 3); //設置邊框效果 addChild(label4); //將標籤加入到場景中 //創建帶發光效果的標籤 auto label5 = Label::createWithTTF("this is the fifth label", "fonts/Marker Felt.ttf", 36); label5->setPosition(200, 70); //設置標籤位置 label5->enableGlow(Color4B::GREEN); //設置光效 addChild(label5); //將標籤加入到場景中
運行之後的效果如圖3-1所示。
圖3-1 在屏幕上顯示不同效果的標籤
在一般情況下想要在屏幕上輸出一行文字只需要按照第01~04行的方法來創建一個標籤,然後再將它加入到場景中去就可以了。最簡單的創建標籤的方法如範例第01~02行所示,其中create方法的6個參數含義分別是:
l 標籤中所顯示文字的內容
l 標籤字體
l 標籤內容字體大小
l 標籤尺寸
l 標籤中文字在橫向和縱向的對齊方式
這看上去有點複雜,實在配不上“最簡單”的創建方法,所以一般在使用時可以進一步簡化,僅保留前3項參數,比如本範例第01行就可以改寫成:
auto label1 = Label::create("this is the first label","Arial",36);
顯示的文字如圖3-1第一行所示,所以說在Cocos2d中顯示文字是非常容易的。然而不能忘記的是,學習Cocos2d的目的主要還是爲了做遊戲,這樣單調的文字自然是遠遠不能適應遊戲的需要,所以就需要在標籤中使用更加個性化的字體。
在Cocos2d 2.x版本中,可以使用LabelTTF類創建標籤來使用TTF格式的字體,然而在Cocos2d 3.x中由於LabelTTF被取消(實際仍然可以使用),就要考慮使用其他辦法來顯示自定義字體。目前主要有兩種方法:
l 一種是通過TTFConfig配置來創建,如範例第06~09行所示;
l 另一種是使用createWithTTF方法創建使用TTF字體的標籤,如範例第11~13行所示。
這兩種方法從本質上來說都是從資源目錄下讀取TTF格式的字體文件,可以在項目目錄下找到Resources|fonts文件夾,將從網上下載的字體文件存放在這裏。
爲了讓字體具有更強大的視覺衝擊力,還可以給文字加入陰影和邊框以及外發光的效果。如範例第17行就是給標籤加入陰影,其中Color4B::GREEN是陰影的顏色而Size(5, 5)是陰影相對於文字的相對位置。第18行則是用來設置文字邊框的,兩個參數分別用來設置邊框顏色和寬度。第23行爲文字加入的外發光效果只有一個參數,那就是光效的顏色。