在做多分辨率适配时,我遇到了一个比较特殊的需求,需要按照现实世界里的真实尺寸做一些适配的工作,这需要调用Device类的getDPI()方法来取得当前设备屏幕的DPI值。可惜的是,cocos2d-x 3.2版本默认没有并导出Device类到Lua环境中,所以需要自己动手才行了。
修改frameworks/cocos2d-x/tools/tolua/cocos2dx.ini
文件,在classes段里加入Device类,就像这样:
然后在接下来的skip段里加入不导出getTextureDataForText方法的定义(这个方法用到了特殊的Data类,导出比较麻烦,暂时不用,所以可以跳过)。注意加到最后一行时要给上一行末尾补个逗号,确保语法正确:
接下来去命令行里执行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 |