您好,登錄后才能下訂單哦!
這方面的問題很多,在目前網絡上很難找到滿足的答案。我在這里將把自己的一個游戲從WIN32到ANDROID移植過程必須面對和要解決的問題,列舉出來(有些是已經得到回答的,有些還未解決)。
1,如何顯示自己的游戲程序圖標
這個使用傳統的android平臺思路實現即可,即修改工程的proj.android\res路徑下drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi下的icon.png文件。
注
意:一次試驗中我僅修改了drawable-hdpi和drawable-mdpi下的文件,而沒有修改drawable-ldpi下的圖標,結果在最終
的真機(Samsung
I9100)上顯示是仍然是drawable-ldpi下的系統默認的圖標。因此,只有全面修改上面文件夾(有的文件夾可以為空)下的圖標為一致的圖像文
件時才能達到目的。
2,中文字體的顯示
這個問題比較復雜,因為存在多種情況。讓我們來逐一討論。最主要的參考資源首先就是伴隨引擎的TESTCPP示例中的LabelTest部分。
值得注意的是,其中有幾個例子是有關于漢字顯示的,因為我們在本文中最關心的首先是在WIN32下顯示正常的漢字,然后在ANDROID平臺上也能正常地顯示漢字,
所以,這幾個例子需要認真地研究。
例1:BMFontUnicode類。
完整代碼如下:
CCDictionary *strings = CCDictionary::createWithContentsOfFile("fonts/strings.xml");
const char *chinese = ((CCString*)strings->objectForKey("chinese1"))->m_sString.c_str();
const char *japanese = ((CCString*)strings->objectForKey("japanese"))->m_sString.c_str();
const char *spanish = ((CCString*)strings->objectForKey("spanish"))->m_sString.c_str();
CCSize s = CCDirector::sharedDirector()->getWinSize();
CCLabelBMFont *label1 = CCLabelBMFont::create(spanish, "fonts/arial-unicode-26.fnt", 200, kCCTextAlignmentLeft);
addChild(label1);
label1->setPosition(ccp(s.width/2, s.height/4*3));
CCLabelBMFont *label2 = CCLabelBMFont::create(chinese, "fonts/arial-unicode-26.fnt");
addChild(label2);
label2->setPosition(ccp(s.width/2, s.height/4*2));
CCLabelBMFont *label3 = CCLabelBMFont::create(japanese, "fonts/arial-unicode-26.fnt");
addChild(label3);
label3->setPosition(ccp(s.width/2, s.height/4*1));
上面代碼在WIN32下與ANDROID平臺上都可以正常顯示漢字。下面給出ANDROID平臺真機上結果的屏幕快照。
最近,我在網絡上花費了不少時間,最后基本認定使用CCLabelBMFont 顯示文字是非常不錯的選擇(有些文章說CCLabelTTF存在效率問題,就先不使用了)。
那么,直接在上面Create方法的第一個參數中使用字符串,例如“中國”,可以嗎?NO!!!!!!!!!!!!!
這個數據必須為UNICODE編碼!!!
經
過分析,我選擇了先把游戲中要使用的文字保存在一個UNICODE編碼的文本文件中(后面還要說這件事),然后根據DEMO中所示,創建一個XML文件,
其格式 與DEMO中一致。看下面的例子。注意:其中的UNICODE標志(看一個DEMO中的XML文件內容即可)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>chinese1</key>
<string>實際使用如下</string>
<key>japanese</key>
<string>非常奇怪</string>
<key>spanish</key>
<string>引擎頭文件</string>
</dict>
</plist>
有
了上面的XML文件,下面要使用字體生成器創建相應的字體及圖像文件。我建議使用(我在WINDOWS下,針對ANDROID平臺)BMFont。就是
DEMO中LabelTest文件中多處指出的那一個(http://www.angelcode.com/products/bmfont/
(Free, Windows only))。
下載后使用它,你可以參考一篇文章(http://blog.csdn.net/aa4790139/article/details/8113197)。
但
是,上面的文章僅是入門級的,有幾個問題沒有指明。我使用其中的方法,可以顯示漢字了,但是漢字有黑色底紋。解決辦法是:把文章中Export
Options處提到的8更改為24即可。當然,使用EDIT-SELECT CHARS FROM FILE時,必須導入UTF-8格式的文本文件。
另
外,BMFont功能還是相當不錯的。盡管它生成的.FNT文件支持多個(頁)png文件,但是就我目前使用的COCOS2D-X 2.0.2而言卻不支
持-僅支持一頁(一個PNG)情況。因此,如果你導入的TXT文件比較大,需要在Export
Options窗口中把位置調整大一些(默認是256X256),例如調整為256X512。總之,你需要圖像調整到一個盡可能小但是又能夠存放下你想使
用的所有漢字的一個PNG文件內。
其他的使用細節就不說了。
對于生成的PNG文件,你可以使用PHOTOSHOP這樣的工具,對文字進行盡情加工。例如,DEMO中的金字也許就是這樣加工的。下圖給出了我的WIN32程序的一個快照(我的PS水平不好)。在ANDROID平臺上也是沒有問題的。
提示:選定PNG文件中的所有文字讓我費了一些腦筋,最后找到辦法是:選擇-色彩范圍-高光。
之后,使用例如最上面的編碼就可以顯示你自己的漢字了(BOTH WIN32 AND ANDROID!!!)。
3,多分辨率顯示問題
4,快捷菜單與后退鍵的操作
在ANDROID平臺上,這個比較簡單。。。。。。
5,加入廣告技術
6,定制自己的游戲軟件標題名稱
這個只需要修改res\values目錄下文件strings.xml中app_name的內容即可,建議在Eclipse中完成。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。