Win32游戏到Android平台移植时必须解决的问题集锦-创新互联
这方面的问题很多,在目前网络上很难找到满足的答案。我在这里将把自己的一个游戏从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文件,下面要使用字体生成器创建相应的字体及图像文件。我建议使用(我在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中完成。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:Win32游戏到Android平台移植时必须解决的问题集锦-创新互联
浏览地址:http://ybzwz.com/article/coopjh.html