现在用的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. Delphi数据类型转换(有几个字符串函数没见过,比如StringToWideChar和WideCharToString)

    DateTimeToFileDate                  函数                     将DELPHI的日期格式转换为DOS的日期格式         DateTimeT ...

  2. POJ 3189 Steady Cow Assignment【网络流】

    题意:每个奶牛对所有的牛棚有个排名(根据喜欢程度排的),每个牛棚能够入住的牛的数量有个上限,重新给牛分配牛棚,使牛棚在牛心中的排名差(所有牛中最大排名和最小排名之差)最小. 牛棚个数最多为20,那么直 ...

  3. Ajenti 1.0 发布,服务器管理系统 - 开源中国社区

    Ajenti 1.0 发布,服务器管理系统 - 开源中国社区 Ajenti 1.0 发布,服务器管理系统

  4. UVa 10188 - Automated Judge Script

    题目:给你一些题目的输出结果,推断是AC,PE还是WA. 分析:模拟. 依照题意模拟就可以,注意PE条件为全部数字字符出现顺序同样就可以. 说明:想起非常多年前写的OJ的后台判题程序了╮(╯▽╰)╭. ...

  5. 使用CSVDE批量导入命令/出口AD用户

    使用CSVDE批量导入命令/出口AD用户         CSVDE命令行工具可以与真实的用户信息CSV文件.批量导入/出口AD在. 导入的基本的语法命令是这种: csvde -i -f c:\fil ...

  6. oschina Web应用开发

    Web应用开发 SPDY开发包(13) HTML5开发相关(105) Pjax相关项目(4) 网站API(93) REST/RESTful项目(72) 响应式 Web 框架(27) 微信相关软件(63 ...

  7. Django之逆向解析url

    Django中提供了一个关于URL的映射的解决方案,你可以做两个方向的使用: 1.有客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的试图, 获取相应的数据 ...

  8. Android开发系列(二十二):AdapterViewFlipper的功能和使用方法

    AdapterViewFlipper继承了AdapterViewAnimator,它会显示一个View组件,能够通过showPrevious()和showNext()方法控制组件显示上一个.下一个组件 ...

  9. C#文件流写入方法

    stream为服务端接收的文件流 var bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的 ...

  10. HDU2037 今年暑假不AC 【贪心】

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...