[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2014-01-21 标题cocos2dx学习笔记分辨率坐标适配分类编程 / C C / cocos2dx 标签cocos2dx·分辨率cocos2dx学习笔记分辨率坐标适配如何适配不同分辨率下的坐标自己实现的.h文件.cpp文件使用方式其他网络资源备注最近项目中用到了cocos2dx来开发一个基于陀螺仪的demo忙了半个星期一边学习一边开发总算搞了出来。这里备份下开发中学习到的一些cocos2dx知识。如何适配不同分辨率下的坐标作者得到的需求是同一套UI下根据不同的分辨率设置不同的坐标。由于时间紧迫作者就自己实现了一套坐标转换代码。备份如下自己实现的.h文件//coordinate utilsclassCU{private:/************************************************************************//* 0: iphone 4 1: iphone 5 *//************************************************************************/staticcocos2d::CCSize visibleSize;staticcocos2d::CCPoint orignPoint;staticintcurrTarget;staticcocos2d::CCPointgetPoint2(inttargetid1,cocos2d::CCPoint p1,inttargetid2,cocos2d::CCPoint p2);public:staticvoidsetSize(cocos2d::CCSize size,cocos2d::CCPoint orp);staticcocos2d::CCPointp(intid);/* ponit select */staticcocos2d::CCPointltp(intid);};.cpp文件intCU::currTarget0;cocos2d::CCPoint CU::orignPointccp(0,0);cocos2d::CCSize CU::visibleSizeCCSizeMake(0,0);cocos2d::CCPointCU::getPoint2(inttargetid1,cocos2d::CCPoint p1,inttargetid2,cocos2d::CCPoint p2){if(CU::currTargettargetid1){returnp1;}if(CU::currTargettargetid2){returnp2;}returnccp(0,0);}/* 根据不同的size设置获取坐标组合这里简单的以高度来判断 */voidCU::setSize(cocos2d::CCSize size,cocos2d::CCPoint orp){CU::orignPointorp;CU::visibleSizesize;if(CU::visibleSize.height960){CU::currTarget1;}else{CU::currTarget0;}}/* id指要获取的UI坐标的ID *//* 比如10代表按钮A */cocos2d::CCPointCU::p(intid){cocos2d::CCPoint ltltp(id);return(ccp((lt.xCU::orignPoint.x),(CU::orignPoint.yCU::visibleSize.height-lt.y)));}cocos2d::CCPointCU::ltp(intid){switch(id){/* 此处坐标的基准点都是屏幕的左上角便于美工给坐标 */case10:returngetPoint2(0,ccp(38,24),1,ccp(38,39));//按钮A的坐标case11:returngetPoint2(0,ccp(260,243),1,ccp(260,258));//按钮B的坐标default:returnccp(0,0);}}使用方式//初始化//初始化其实可以不同初始化可以通过单例或其他方式来隐藏掉初始化代码但时间较紧就直接这样写了。CCSize visibleSizeCCDirector::sharedDirector()-getVisibleSize();CCPoint originCCDirector::sharedDirector()-getVisibleOrigin();CU::setSize(visibleSize,origin);//使用sprite-setPosition(CU::p(10));//sprite使用ID为10的坐标其他网络资源http://www.ityran.com/archives/4809备注由于时间紧张作者没有详细的设计CU类其仅仅能完成功能。后续需要优化。