[windows+cocos2dx]文本類

文字也是遊戲最重要的元素之中的一個,如下就看看使用動態字體和靜態字體庫怎樣建立文字。使用動態字體庫建立的文字可以包括常常使用的不論什麼字符,通常假設用戶要輸入名字,這就最好用動態字體庫。因爲你不知道用戶要建立什麼字符,但動態字體庫比較大。假設要壓縮包的大小,儘可能就用靜態字體庫,如下會介紹怎樣製做靜態字體庫。windows

動態字體庫

在系統的System32/Font文件下就有若干多個字體庫,好比微軟雅黑.ttf等。咱們可以找一個ttf文件直接放在Resource文件下。
CCLabelTTF *label = CCLabelTTF::create(G2U("hello,世界"),"bb1519",25);
label->setPosition(ccp(size.width/2,size.height/2));
this->addChild(label);
因爲cocos2dx在windows平臺下中文字體需要進行一個轉碼,cocos中中文默認的是gb2312編碼,而OpenGL渲染中文的時候支持UTF8編碼格式,這就需要進行一個轉碼。否則的話顯示出來會是亂碼。
轉碼函數:
//轉碼成utf-8,windows默認gb2312
char* HelloWorld::G2U(const char* gb2312)  
{  
	int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);  
	wchar_t* wstr = new wchar_t[len+1];  
	memset(wstr, 0, len+1);  
	MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);  
	len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
	char* str = new char[len+1];  
	memset(str, 0, len+1);  
	WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);  
	if(wstr) delete[] wstr;  
	return str;  

}

靜態字體庫

靜態字體庫是以fnt命名格式的文件,和還有一張png字體圖集相應的。程序中僅僅能顯示靜態字體包括的字符,假設字庫裏面沒有該字符的話。界面中就不會顯示出來。

怎樣製做靜態字體庫?

1.下載安裝BMFont工具;
2.新建文本文件。裏面輸入想要的字符,切記要保存爲utf8格式。否則軟件不識別。
3.打開BMFont工具,Edit->Select char from file,導入剛剛的字符文本。軟件會本身主動識別你所輸入的字符,並且灰色顯示。



4.選擇Option->FontSetting


5.選擇Option->Save bitmap font as,保存字庫


6.設置導出選項,在BMFont上找到Option菜單,而後選擇Export options。在cocos2d-x中需要按例如如下設置ide



7. 準備導出字體。在BMFont上找到Options,而後選擇Save bitmap font as,會發現保存路徑下多出了一個fnt文件和一個png文件(事實上這個和plist文件保存拼圖信息原理差點兒相同),將它們複製到cocos2d-xproject的Resources文件夾下函數


代碼建立文字
CCLabelBMFont *labelfont = CCLabelBMFont::create("i am dingxiaowei","text.fnt");
labelfont->setPosition(ccp(size.width*0.5,size.height/2 -30));
this->addChild(labelfont);

效果圖



靜態字體庫建立的文本會發現顯示的文字跟咱們輸入的有差異,沒有顯示全,這就是靜態字體庫建立的label需要注意的,必需要確保你想要顯示的字符。在靜態字體庫中都要有!

第二種建立文本的方法:
CCLabelAtlas *labelalt = CCLabelAtlas::create("hello,alets","xxx.plist");
labelfont->setPosition(ccp(size.width*0.5,size.height/2 -30));
this->addChild(labelfont);


歡迎關注個人圍脖工具

==================== 迂者 丁小未 CSDN博客專欄=================post

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243學習

Unity QQ羣:375151422      cocos2dx QQ羣:280818155字體

====================== 相互學習,共同進步 ===================this

相關文章
相關標籤/搜索