Posted on 2010-04-22 18:56
劍孤寒 閱讀(1050)
評論(7) 編輯 收藏 引用 所屬分類:
Galaxy2D 游戲引擎教程
這一節我們來學習如何使用字體,首先我們要創建一個字體,在GGE中用
Font_Create (LPCSTR fontname, int size=16, bool bBold=false, bool bBorder=false)函數來創建一個字體。
fontname表示字體名字,可以使用任何已在操作系統中注冊過的字體,如果找不到指定的字體,將使用系統默認字體。
size參數表示字體大小,單位為像素,默認的字體大小為16x16像素。如果希望使用粗體字,可將
bBold參數設為true。
bBorder參數則用于設置是否給字體加上邊框,邊框的顏色也是可以設置的。
在OnInitiate()函數中添加創建字體代碼:
m_font = Font_Create("宋體", 18, false, true); 創建成功會返回一個ggeFont指針,順便設置一下字體邊框的顏色
m_font->SetBorderColor(0xFF0000FF);
ggeFont提供了兩個函數來將文字顯示在屏幕上,分別是gge::Render()和gge::Print(),后者有點像printf()函數可以格式化字符串。在顯示文字時可以設置文字的對齊樣式,ggeFont提供了三種對齊樣式:左對齊、右對齊、居中對齊,可以通過ggeFont::SetAlign()函數進行設置。
//設置對齊樣式
Graph_RenderLine(128, 0, 128, 60);
m_font->SaveState(); //保存當前狀態
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(); //恢復以前的狀態
前面代碼中的ggeFont::SaveState()和ggeFont::LoadState()用于保存和恢復字體狀態,以免前面改變的字體狀態會影響后面的文字顯示,而且也不用每次改了狀態后都要人肉改回來了。
在一些游戲中可能需要讓文字逐字顯示出來,ggeFont提供了一個函數
ggeFont::SetCharNum()來做這件事情,另外在游戲中可能需要顯示一些關鍵字,ggeFont提供了一個顏色標簽功能,使得可以在顯示文字時動態改變后面的文字顏色。
//顯示一定數量的文字
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(); //保存當前狀態
m_font->SetCharNum(m_charNum); //設置顯式的文字數量
m_font->Render(0, 100, "<cff0000>字<cffff00>體<cff00ff>測<c00ffff>試"); //顯示文字
m_font->LoadState(); //恢復以前的狀態
m_font->Print(0, 120, "正在顯示第%d個字。", m_charNum);
這段代碼先通過ggeFont::GetStringInfo()函數拿到字符串文字數量(也可以拿到字符串其它一些信息,詳細說明請查看引擎文檔),然后用ggeFont::SetCharNum()設置每次要顯示的文字數量,在顯示文字時通過在文字前加上類似<cff0000>的顏色標簽來動態改變字符串中的文字顏色。
有時候在顯示一段文字時可能想要文字根據某個寬度自動換行,ggeFont提供了一個
ggeFont::SetLingWidth()來做這件事情。
//設置行間距、字間距以及換行
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的一些常用功能,還有一些例如裁剪、陰影等功能就不一一舉例了,文檔里都有詳細說明。
