一、FontToUTF8()方法修改字型:
1、HelloWorldScene.h標頭檔案中宣告方法:
1 char* FontToUTF8(const char* font);
2、HelloWorldScene.cpp中書寫方法:
1 char* HelloWorld::FontToUTF8(const char* font) 2 { 3 int len = MultiByteToWideChar(CP_ACP, 0, font, -1, NULL, 0); 4 wchar_t *wstr = new wchar_t[len + 1]; 5 memset(wstr, 0, len + 1); 6 MultiByteToWideChar(CP_ACP, 0, font, -1, wstr, len); 7 len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL); 8 char *str = new char[len + 1]; 9 memset(str, 0, len + 1); 10 WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL); 11 if (wstr) 12 delete[] wstr; 13 return str; 14 }
HelloWorldScene.cpp中初始化init()方法裡,呼叫方法進行中文轉換:
1 auto* label3 = Label::create(HelloWorld::FontToUTF8("開始遊戲"), "宋體", 40);
注意:這種方法可以使執行結果裡的亂碼成為中文,但是會有一個問題,就是在打包成apk時出現錯誤:
錯誤:
這是由於NDK不支援所用的C++庫造成的。
二、XML檔案呼叫修改字型:
資原始檔夾Resources下:
檔案內容都如下:
1 <dict> 2 <key>string</key> 3 <string>開始遊戲</string> 4 </dict>
HelloWorldScene.cpp中呼叫XML檔案:
1 auto *chnStrings = Dictionary::createWithContentsOfFile("UTF8.xml"); 2 const char *str1 = ((String*)chnStrings->objectForKey("string"))->getCString(); 3 auto* label3 = Label::create(str1, "宋體", 40);
注意:xml檔案和bak檔案都是要儲存為UTF-8編碼格式,這個很重要:
結果如圖:
打包驗證:
打包成功!