天天看點

Cocos2d-x标簽文亂碼問題

Cocos2d-x标簽文亂碼問題
Cocos2d-x标簽文亂碼問題

helloworldscene.cpp中init函數如下

上述代碼第①行是建立一個labelttf标簽對象其中包括中文字元。類似的第⑤行代碼是label::createwithttf建立一個label标簽對象。它們都需要指定字型問題為了顯示中文需要字型庫檔案支援中文其中第④行代碼stliti.ttf字型庫是華文隸書。

第②行代碼是通過labelbmfont::create建立位圖字型标簽。第③行代碼是通過label::createwithbmfont建立位圖字型标簽。

出現亂碼或無法顯示的原因是由于在windows中文環境下使用visual studio建立的源程式檔案是采用gbk編碼。解決方法很簡單我們隻需要把helloworldscene.cpp檔案另存為utf-8就可以了用記事本等文本編輯工具打然後另存為utf-8就可以或者是在visual studio工具中可以選擇菜單檔案→進階儲存選項在彈出如下圖所示對話框選擇編碼為unicode(utf-8無簽名)然後點選确定按鈕儲存。

Cocos2d-x标簽文亂碼問題

注意不能儲存為unicode(utf-8帶簽名)。而采用unicode(utf-8無簽名)的檔案在程式編譯的時候第⑤行代碼label::createwithttf中如果包含中文有的時候會有如下編譯錯誤

2>helloworldscene.cpp(58): errorc2001:常量中有換行符

2>helloworldscene.cpp(59): errorc2143:文法錯誤 :缺少“)”(在“center”的前面)

2>helloworldscene.cpp(60): errorc2059:文法錯誤:“)”

這是由于visual studio對于unicode(utf-8無簽名)識别有誤我們一般在後面添加一些英文字元或者“啊”等特殊的中文字元。

在上面的中文第①行代碼在visual studio下無法編譯第②行代碼可以字元串後面追加“啊”編譯通過并且能夠正常顯示。第③行代碼我們在中文字元後面追加“.”(英語句号)編譯通過但是“天”字不能顯示。而在android和ios平台如果如果也采用utf-8那麼上面的問題就不會出現能夠編譯和正常顯示。

菜單中又包含了菜單項菜單項類是menuitem每個菜單項都有三個基本狀态正常、選種和禁止。我們再回顧一下menuitem類圖如下圖所示。

Cocos2d-x标簽文亂碼問題

菜單分類是按照菜單項進行分類的從menuitem類圖中可見menuitem的派生類有menuitemlabel、menuitemsprite和menuitemtoggle。其中menuitemlabel類是文本菜單它有兩派生類menuitematlasfont和menuitemfont。menuitemsprite類是精靈菜單它的派生類是menuitemimage它是圖檔菜單menuitemtoggle類是開關菜單。

歡迎加入cocos2d-x技術讨論群257760386、327403678更多内容請關注最新cocos圖書《cocos2d-x實戰 c++卷》

歡迎加入cocos2d-x技術讨論群257760386

《cocos2d-x實戰 c++卷》現已上線各大商店均已開售

《cocos2d-x實戰 c++卷》源碼及樣章下載下傳位址

歡迎關注智捷ios課堂微信公共平台

Cocos2d-x标簽文亂碼問題

繼續閱讀