天天看點

cocos2dx3.0中顯示中文

今天寫個test的例子,想在menu的item上顯示中文,但是直接寫中文,顯示不能,是以查了一下資料,網上有說利用iconv庫實作的,做一次轉碼,但是感覺隻是在menu上顯示個中文而已,其實沒必要,是以這部分就沒做,另一種方法就是把要顯示的中文寫到一個plist檔案中,該plist檔案時utf-8編碼,然後讀取plist檔案來顯示。

plist中的内容如下:(注意這個檔案的編碼格式一定要儲存為utf-8,不然還是讀不出來)

<!--?xml version="1.0" encoding="UTF-8"?-->

<plist version="1.0">

    <dict>

        <key>test_id</key>

        <string>測試字元串</string>

    </dict>

</plist>

程式代碼如下:

    TTFConfig ttfConfig("fonts/wt021.ttf",28,GlyphCollection::CUSTOM);

    Dictionary* dic = Dictionary::createWithContentsOfFile("test.plist");

    CCString* strchinese = (CCString*)dic->objectForKey("test_id");

    Label* pLabel = Label::createWithTTF(ttfConfig, strchinese->getCString(), TextHAlignment::CENTER);

這樣就可以了。

多提一點,将文本儲存到一個配置檔案裡是個好習慣,因為文本變動相對還是比較頻繁的,是以要盡量避免這種變動帶來的重新編譯,而且修改文本相對也較容易些。

===============================================================================================================

其實cocos2dx中提供了顯示中文的例子,例子的代碼如下:

LabelTTFUnicodeChinese::LabelTTFUnicodeChinese()

{

    auto size = Director::getInstance()->getWinSize();

    // Adding "啊" letter at the end of string to make VS2012 happy, otherwise VS will generate errors  

    // like "Error 3 error C2146: syntax error : missing ')' before identifier 'label'"; 

    TTFConfig ttfConfig("fonts/wt021.ttf",28,GlyphCollection::CUSTOM, "美好的一天啊");

    auto label = Label::createWithTTF(ttfConfig,"美好的一天啊", TextHAlignment::CENTER, size.width);

    label->setPosition(Point(size.width / 2, size.height /2));

    this->addChild(label);

}

但是我移植到我的項目中一直顯示不出來,我猜應該是我檔案格式的問題,在VS2012中修改檔案的編碼格式在這個菜單裡:

cocos2dx3.0中顯示中文

這個選項,cocos2dx3.0的檔案格式是

cocos2dx3.0中顯示中文

而vs2012預設建立的是GB2312,代碼頁936,是以如果不修改這個編碼格式的話,需要進行編碼轉化才能正常顯示。

繼續閱讀