在做多分辨率适配时,我遇到了一个比较特殊的需求,需要按照现实世界里的真实尺寸做一些适配的工作,这需要调用Device类的getDPI()方法来取得当前设备屏幕的DPI值。可惜的是,cocos2d-x 3.2版本默认没有并导出Device类到Lua环境中,所以需要自己动手才行了。

修改frameworks/cocos2d-x/tools/tolua/cocos2dx.ini文件,在classes段里加入Device类,就像这样:

cocos2dx.ini加入Device类导出到Lua

然后在接下来的skip段里加入不导出getTextureDataForText方法的定义(这个方法用到了特殊的Data类,导出比较麻烦,暂时不用,所以可以跳过)。注意加到最后一行时要给上一行末尾补个逗号,确保语法正确:

cocos2dx.ini加入Device类导出到Lua

接下来去命令行里执行python project_root/frameworks/cocos2d-x/tools/tolua/genbindings.py,然后再cocos compile -p mac编译一下,就可以在Lua里这么调用了:

cc.Device:getDPI()

在iPod 5上测试通过,打印出来DPI值是326,狠准。

另外补充几个常见设备的DPI值:

设备 DPI
iPhone 6 Plus 401
iPhone 6 326
iPhone 5S 326
iPhone 5C 326
iPhone 5 326
iPhone 4S 326
iPhone 4 326
iPod 5 326
iPod 4 326
iPad Mini 326
iPad Air 264
iPad 4 264
iPad 3 264
RMBP 15" 220
RMBP 13" 227


洪亮
697 声望65 粉丝