现在用的2d-x版本是2.1.1。现在的项目要求是iphone ,iphone Retina,ipad和ipad Retina都有各自的路径来存放各自需要的资源。在AppDelegate的

applicationDidFinishLaunching()函数中根据屏幕分辨率来设置

, ),   "iPhone" };

*, *),   "iPhoneHD" };

, ),    "iPhoneTaller"};

, ),  "iPad"   };

, ), "iPadHD" };

, );

, );

, );

bool AppDelegate::applicationDidFinishLaunching()

{

// initialize director

CCDirector *pDirector = CCDirector::sharedDirector();

CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

pDirector->setOpenGLView(pEGLView);

std::vector<std::string> searchPath = CCFileUtils::sharedFileUtils()->getSearchPaths();

// Set the design resolution

pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);

CCSize designSize = designResolutionSize;

CCSize frameSize = pEGLView->getFrameSize();

_isLongiPhone = false;

_isIpadHD = false;

_isIpadNormal = false;

// In this demo, we select resource according to the frame's height.

// If the resource size is different from design resolution size, you need to set contentScaleFactor.

// We use the ratio of resource's height to the height of design resolution,

// this can make sure that the resource's height could fit for the height of design resolution.

// if the frame's height is larger than the height of medium resource size, select large resource.

if (frameSize.height == iPadHDResource.size.height && frameSize.width == iPadHDResource.size.width)

{

searchPath.push_back(iPadHDResource.directory);

searchPath.push_back(iPhoneHDResource.directory);

designSize = designIpadResolutionSize;

pEGLView->setDesignResolutionSize(designSize.width, designSize.height, kResolutionNoBorder);

pDirector->setContentScaleFactor(iPadHDResource.size.height/designIpadResolutionSize.height);

_isIpadHD = true;

}

// if the frame's height is larger than the height of small resource size, select medium resource.

elseif (frameSize.height == iPadResource.size.height && frameSize.width == iPadResource.size.width)

{

searchPath.push_back(iPadResource.directory);

searchPath.push_back(iPhoneHDResource.directory);

designSize = designIpadResolutionSize;

pEGLView->setDesignResolutionSize(designSize.width, designSize.height, kResolutionNoBorder);

pDirector->setContentScaleFactor(iPadResource.size.height/designIpadResolutionSize.height);

_isIpadNormal = true;

}

// if the frame's height is smaller than the height of medium resource size, select small resource.

elseif (frameSize.height == iPhoneResource.size.height && frameSize.width == iPhoneResource.size.width)

{

searchPath.push_back(iPhoneResource.directory);

searchPath.push_back(iPhoneHDResource.directory);

pDirector->setContentScaleFactor(iPhoneResource.size.height/designResolutionSize.height);

}

elseif (frameSize.height == iPhoneHDResource.size.height && frameSize.width == iPhoneHDResource.size.width){

searchPath.push_back(iPhoneHDResource.directory);

pDirector->setContentScaleFactor(iPhoneHDResource.size.height/designResolutionSize.height);

designSize = designResolutionSize;

pEGLView->setDesignResolutionSize(designSize.width, designSize.height, kResolutionNoBorder);

}

elseif (frameSize.height == iPhoneTallerResource.size.height && frameSize.width == iPhoneTallerResource.size.width){

//push taller resources" directory first,so look for resources in  taller resources" directory first

searchPath.push_back(iPhoneTallerResource.directory);

searchPath.push_back(iPhoneHDResource.directory);

designSize = designTallerResolutionSize;

pEGLView->setDesignResolutionSize(designSize.width, designSize.height, kResolutionNoBorder);

pDirector->setContentScaleFactor(iPhoneTallerResource.size.height/designResolutionSize.height);

_isLongiPhone = true;

}

CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);

}


这样设置路径之后,进入游戏时会在
SearchPaths里寻找所需要的资源。需要注意的是各个路径下的资源文件相同就行了,不用根据是否未Retina而添加-HD后缀。

cocos2d-x适配多分辨率的更多相关文章

  1. Unity2D多分辨率屏幕适配方案(转载)

    一下内容转自:http://imgtec.eetrend.com/forum/3992 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有 ...

  2. [原创]一种Unity2D多分辨率屏幕适配方案

    此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个 ...

  3. 一种Unity2D多分辨率屏幕适配方案

    http://www.cnblogs.com/flyFreeZn/p/4073655.html 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏 ...

  4. Unity 手机屏幕适配

    ////如有侵权 请联系我进行删除 email:YZFHKM@163.com 1.游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知 ...

  5. dp和px转换

    在编写自定义view的时候,通常会在onTouchEvent回调方法中进行一些关乎距离的判断逻辑,这里的距离常量如果适配到多分辨率的不同设备上时可能会出现一些错乱的问题. 所以一般来说,常常需要dp到 ...

  6. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  7. Unity GUI选择与评价

    因为Unity内建的GUI不管是不是从开发效率或效率强制,因此,许多派生GUI插入,什么插件的选择,是一个非常值它被认为是. 既然是评价,就会有非常多的主观意识,这不一定成为选择的根据. 再比方.我已 ...

  8. 中国移动能力开放商店OneNET View数据可视化公测 10分钟轻便生成行业可视化界面

    随着云计算,5G技术,人工智能等底层技术的发展,万物互联时代已经到来,同时带来了海量数据,如何效果好.低成本.短时间的表现据,成为物联网行业从业者和公司的当务之急. OneNET View传统的数据展 ...

  9. 资本寒冬下的android面经

    在2018年10月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真是战 ...

随机推荐

  1. THashMD5,THashSHA1,THashBobJenkins,TIdHashMessageDigest5的用法

    [delphi] view plain copy unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils ...

  2. [C++]指针浅析

    Date: 2014-1-4 summary: 指针的简单理解,概念性的东西会比较多(100个人有100种理解,此处只代表我个人看法) Contents: 1.什么是指针 c++ primer plu ...

  3. Java 建立mysql数据库连接的语句

    每次在面试时被问到jdbc的数据路链接过程都卡着,这次不怕了,背会了... 第一个,比较粗糙的 try{   Class.forName("com.mysql.jdbc.Driver&quo ...

  4. pdftk的使用介绍

    首先像下面的一页pdf,如果想把它分成两页,每一页只是一个ppt页面(为了在kindle里读比较方便), 那么可以首先用A-pdf page cut, 将pdf 切成这样12个部分 然后我们现在要的只 ...

  5. git digest

    .gitignore文件示例: .classpath .project .idea/ .settings/ target/ *~ *.iml *.log *.tmp https://zhuanlan. ...

  6. IE常见的CSS的BUG(二)

    之前介绍过IE浏览器的几种BUG解决的方法,今天我们继续研究IE的BUG.尽管IE6即将被淘汰,但是了解这些也对将来解决问题也是有一定帮助的.好了,闲话不多说,咱们继续看IE的BUG. 1.IE6下P ...

  7. android用于打开各种文件的intent

    import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.n ...

  8. java,spring,tomcat,跨域设置

    通过工具远程访问rest会出现  已阻止跨源请求:同源策略禁止读取位于 http://XXXXX:1200/gyly/busData 的远程资源.(原因:CORS 请求失败).  修改方法 添加Fil ...

  9. C#反射机制详解(转)

    两个现实中的例子:1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时 ...

  10. Django写的投票系统2(转)

    在上一篇中 django实例:创建你的第一个应用投票系统(一) 已经介绍基本的功能,并已经启动服务了.这一节介绍数据库相关的东东. 首页打开mysite/settings.py配置文件, 设置数据库打 ...