Posted on 2010-04-22 18:56
劍孤寒 閱讀(1132)
評論(7) 編輯 收藏 引用 所屬分類:
Galaxy2D 游戲引擎教程
這一節(jié)我們來學(xué)習(xí)如何使用字體,首先我們要創(chuàng)建一個字體,在GGE中用
Font_Create (LPCSTR fontname, int size=16, bool bBold=false, bool bBorder=false)函數(shù)來創(chuàng)建一個字體。
fontname表示字體名字,可以使用任何已在操作系統(tǒng)中注冊過的字體,如果找不到指定的字體,將使用系統(tǒng)默認(rèn)字體。
size參數(shù)表示字體大小,單位為像素,默認(rèn)的字體大小為16x16像素。如果希望使用粗體字,可將
bBold參數(shù)設(shè)為true。
bBorder參數(shù)則用于設(shè)置是否給字體加上邊框,邊框的顏色也是可以設(shè)置的。
在OnInitiate()函數(shù)中添加創(chuàng)建字體代碼:
m_font = Font_Create("宋體", 18, false, true); 創(chuàng)建成功會返回一個ggeFont指針,順便設(shè)置一下字體邊框的顏色
m_font->SetBorderColor(0xFF0000FF);
ggeFont提供了兩個函數(shù)來將文字顯示在屏幕上,分別是gge::Render()和gge::Print(),后者有點像printf()函數(shù)可以格式化字符串。在顯示文字時可以設(shè)置文字的對齊樣式,ggeFont提供了三種對齊樣式:左對齊、右對齊、居中對齊,可以通過ggeFont::SetAlign()函數(shù)進(jìn)行設(shè)置。
//設(shè)置對齊樣式
Graph_RenderLine(128, 0, 128, 60);
m_font->SaveState(); //保存當(dāng)前狀態(tài)
m_font->SetColor(0xFFFFFFFF);
m_font->SetAlign(TEXT_LEFT);
m_font->Render(128, 0, "左對齊");
m_font->SetAlign(TEXT_CENTER);
m_font->Render(128, 20, "居中對齊");
m_font->SetAlign(TEXT_RIGHT);
m_font->Render(128, 40, "右對齊");
m_font->LoadState(); //恢復(fù)以前的狀態(tài)
前面代碼中的ggeFont::SaveState()和ggeFont::LoadState()用于保存和恢復(fù)字體狀態(tài),以免前面改變的字體狀態(tài)會影響后面的文字顯示,而且也不用每次改了狀態(tài)后都要人肉改回來了。
在一些游戲中可能需要讓文字逐字顯示出來,ggeFont提供了一個函數(shù)
ggeFont::SetCharNum()來做這件事情,另外在游戲中可能需要顯示一些關(guān)鍵字,ggeFont提供了一個顏色標(biāo)簽功能,使得可以在顯示文字時動態(tài)改變后面的文字顏色。
//顯示一定數(shù)量的文字
int maxChar = m_font->GetStringInfo("字體測試");
if (Timer_GetTime() - m_charTime > 1)

{
if (m_charNum >= maxChar) m_charNum = 0;
else m_charNum++;

m_charTime = Timer_GetTime();
}
m_font->SaveState(); //保存當(dāng)前狀態(tài)
m_font->SetCharNum(m_charNum); //設(shè)置顯式的文字?jǐn)?shù)量
m_font->Render(0, 100, "<cff0000>字<cffff00>體<cff00ff>測<c00ffff>試"); //顯示文字
m_font->LoadState(); //恢復(fù)以前的狀態(tài)
m_font->Print(0, 120, "正在顯示第%d個字。", m_charNum);
這段代碼先通過ggeFont::GetStringInfo()函數(shù)拿到字符串文字?jǐn)?shù)量(也可以拿到字符串其它一些信息,詳細(xì)說明請查看引擎文檔),然后用ggeFont::SetCharNum()設(shè)置每次要顯示的文字?jǐn)?shù)量,在顯示文字時通過在文字前加上類似<cff0000>的顏色標(biāo)簽來動態(tài)改變字符串中的文字顏色。
有時候在顯示一段文字時可能想要文字根據(jù)某個寬度自動換行,ggeFont提供了一個
ggeFont::SetLingWidth()來做這件事情。
//設(shè)置行間距、字間距以及換行
m_font->SaveState();
m_font->SetLineSpace(4);
m_font->SetCharSpace(2);
m_font->SetLineWidth(140);
m_font->Render(0, 180, "這段文字的行間距為4,字間距為2,每行如果超過140個像素則自動換行。");
m_font->LoadState(); 以上介紹了ggeFont的一些常用功能,還有一些例如裁剪、陰影等功能就不一一舉例了,文檔里都有詳細(xì)說明。
