iPhone4国行版的发售,又掀起了一股热潮。最开心的要数国产的iPhone开发者,因为目前4.1版尚未越狱,要装各种软件和游戏,只有去App Store购买。iPhone4卖疯了,相应的iPhone的软件也卖疯了。坛子里不少开发者爆料收入翻了四翻,更有甚者,销量提高了十倍以上。PopCap曾经说过,他们的植物大战僵尸的iPhone正版在中国内陆销售额非常高,在全世界的国家中排在前列。
自己拿到iPhone4的第一件事就是下载iOS最新的4.1版SDK,然后在iPhone4下看看自己那些个小软件的现实效果。果不其然,不少图标和界面元素在iPhone4下都显得略微模糊和粗糙,但是不太影响软件的正常使用。于是开始研究iPhone4高清屏的程序开发方式。
iPhone4以前的机器屏幕分辨率为320×480,iPhone4直接翻了一倍640×960,好家伙,要赶上我的笔记本电脑的分辨率了。在这种分辨率下,以往程序的一些图片元素不可避免地由于放大的缘故变得粗糙起来。不过iOS的系统框架的那些按钮字体导航等界面元素,可以自动适应iPhone4的高清屏幕,也就是说,基本上所有能在3GS上跑的软件,在iPhone4下面没有太大的问题。但是对于游戏来说,不会去用iOS的界面原生空间,所以在3GS下清晰的游戏,到了iPhone4不可避免地杯具起来……
其实同时为iPhone4及以前版本的手机开发程序不用做太多的工作。不需要添加任何代码来检测分辨率等工作,代码还是用一套,只不过资源文件另外准备一套iPhone4的即可。iOS做了一个系统底层的fix,会根据当前机器的分辨率来自动加载不同的资源。使用方法极其极其简单,在为iPhone4准备的资源后面加上“@2x”字样即可,什么工作都不用,程序就自然支持高清了。
例如在3GS下界面某个元素的文件名为“button.png”,那么为iPhone4准备的元素就为“[email protected]”即可,iOS会在底层根据情况自动加载不同的图片。非常智能和优雅的解决方案。
那么用cocos2d写的游戏程序呢?一样的,新版的cocos2d已经开始支持了iPhone4的高清屏,为了避免和iOS冲突,它的解决方案是在资源后面加上“-hd”。用points方式撰写位置,不用改动任何代码。只是在Pixels层级可以获得高清的像素值。
这里有一篇文章,详细讲述了iPhone4高清屏的开发事项,当然最好是用cocos2d 0.99.5版本,支持得相当好:
http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:how_to_develop_retinadisplay_games_in_cocos2d
不过在使用Box2d的过程中,发现Box2d的坐标似乎是全部按照Pixels来进行定位,使用过程中发现了蛮多的问题……