在使用cocos2dx 的label標籤做菜單時候,想給菜單中文名稱,但是運行後出現的是亂碼問題,這個問題在cocos2dx的版本都存在。解決此類問題最直接的方法是使用圖片菜單來解決,當然我們這次是非要用label文字來解決。
中文亂碼測試代碼:
02 | auto label_gameplay = LabelTTF::create( "開始遊戲" , "fonts/Marker Felt.ttf" , 24); |
03 | auto label_gameset = LabelTTF::create( "遊戲設置" , "fonts/Marker Felt.ttf" , 24); |
04 | auto label_gamequit= LabelTTF::create( "退出遊戲" , "fonts/Marker Felt.ttf" , 24); |
06 | label_gameplay->setPosition(Vec2(origin.x + visibleSize.width/2, |
07 | origin.y + visibleSize.height/2+100)); |
08 | label_gameset->setPosition(Vec2(origin.x + visibleSize.width/2, |
09 | origin.y + label_gameplay->getPositionY()-50)); |
10 | label_gamequit->setPosition(Vec2(origin.x + visibleSize.width/2, |
11 | origin.y + label_gameset->getPositionY()-50)); |
13 | this ->addChild(label_gameplay); |
14 | this ->addChild(label_gameset); |
15 | this ->addChild(label_gamequit); |
使用此代碼運行後,就會看到我們所謂的亂碼界面了。
下面我們就使用讀取xml配置文件的方式來解決此問題。首先我們在我們的資源目錄Resources裡創建一個xml文件,我們把它命名為「zhongwen.xml」。然後按照一定的格式寫入數據。
xml文件代碼案例:
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
使用xml鍵值對的形式來存儲我們的遊戲文字,這樣我們讀取相應的key鍵就可以得到我們想要的value值。
我們用cocos2dx給出的Dictionary這個類提供的方法來操作。
1、首先加載我們的xml配置文件。
1 | Dictionary *strings = Dictionary::createWithContentsOfFile( "zhongwen.xml" ); |
2、然後查找xml文件的key鍵
1 | const char *gameplay=((String*)strings->objectForKey( "gameplay" ))->getCString(); |
2 | const char *gameset=((String*)strings->objectForKey( "gameset" ))->getCString(); |
3 | const char *gamequit=((String*)strings->objectForKey( "gamequit" ))->getCString(); |
3、label標籤實現中文匹配
1 | auto label_gameplay= LabelTTF::create(gameplay, "fonts/Marker Felt.ttf" , 24); |
2 | auto label_gameset= LabelTTF::create(gameset, "fonts/Marker Felt.ttf" , 24); |
3 | auto label_gamequit= LabelTTF::create(gamequit, "fonts/Marker Felt.ttf" , 24); |
到此我們就可以來測試運行我們的程序了,看看我們的解決結果。
沒有留言:
張貼留言