cocos2d-x 2.x适应多平台多分辨率的方案

原创 2012年12月19日 16:20:27

Cocos2d-x从2.0开始支持多平台多分辨率,但无论是从官方的介绍还是官方的demo都介绍得比较模糊,其中只提到使用

CCFileUtils::sharedFileUtils()->setResourceDirectory()

CCEGLView::sharedOpenGLView()->setDesignResolutionSize()

这两个方法来控制。但我感觉通常情况下,Demo里所展示的代码并不能满足大部分开发者的要求。例如拿一个RPG的游戏来举例,一般是地图是全屏显示,然后按钮可能会按固定的边距放在屏幕的各个位置。下图分别是在4:3的屏幕和16:9的屏幕上的按钮排布。

要实现这种效果其实很简单。在AppDelegate::applicationDidFinishLaunching()方法里添加如下代码:

CCDirector *pDirector =CCDirector::sharedDirector();

   pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());

   

   CCSize screenSize = CCEGLView::sharedOpenGLView()->getFrameSize();

   CCLOG("ScreenSize width:%f,height:%f", screenSize.width,screenSize.height);

   CCSize designSize;

    //这里还不能适应IPad3,IPad4,但规律是一样的。自行添加相应的适应代码即可

   if (screenSize.height > 320)

    {

       CCFileUtils::sharedFileUtils()->setResourceDirectory("HD");

       pDirector->setContentScaleFactor(2);

       designSize = CCSizeMake(screenSize.width / 2, screenSize.height / 2);

       CCLOG("Use HD Resource");

    }

   else

    {

       designSize = screenSize;

       pDirector->setContentScaleFactor(1);

       CCLOG("Use SD Resource");

    }

   

   CCLOG("designSize width:%f,height:%f", designSize.width,designSize.height);

   CCLOG("Content Scale Factor:%f",pDirector->getContentScaleFactor());

CCEGLView::sharedOpenGLView()->setDesignResolutionSize(designSize.width,designSize.height, kResolutionNoBorder);


 

         然后在设置主屏幕上的按钮的坐标的时候要注意加上或减去使用相应的偏移量,例如水平方向的偏移量可以这样获得:

int offsetX =(CCDirector::sharedDirector()->getVisibleSize().width - 480);

         但如果你是使用CocosBuilder作界面编辑器的话,那么恭喜你,基本上你不太需要关注这些偏移值,因为CocosBuilder在设置控件或精灵的坐标时可以选择使用相对左上,左下,右上和右下四个边角的偏移。


cocos2d-x多分辨率适配方案:setDesignResolutionSize详解

原文链接:http://gpra.pkstudio.org/archives/217 cocos2d-x是一个优秀的跨平台游戏引擎,当然跨平台超容易遇到的分辨率适配问题,cocos2d-x也提供...
  • a102111
  • a102111
  • 2014年12月23日 20:10
  • 1236

QML多分辨率屏幕适配

width: Qt.platform.os == "windows" || Qt.platform.os == "osx" ? defaultW : Screen.desktopAvailableW...
  • nnngo
  • nnngo
  • 2017年03月22日 01:16
  • 493

Cocos2d-x之多分辨率屏幕适配

一、适配简介如今市面上的手机种类越来越多,分辨率是千变万化的。但是我们做游戏开发,喜欢自己的游戏可以在各个手机都能合适的运行,那么就需要做多分辨率的适配。二、retain屏幕概念之前,苹果手机对480...
  • qq_27788829
  • qq_27788829
  • 2016年03月08日 15:47
  • 702

关于图像多分辨率

原文地址:关于图像多分辨率作者:小鱼      上次那个关于图像缩放的问题虽然已经得到了解决(有点歪打正着),但直到今天跟同学讨论(以前用过金字塔分解)的时候,我才恍然大悟,似乎弄清了其所以然。其实图...
  • shangyaowei
  • shangyaowei
  • 2013年12月19日 20:43
  • 528

Cocos与Cocos2d-x协作教程——多分辨率适配

(原文:http://www.cocoachina.com/bbs/read.php?tid-280071.html) 布局系统(2.1beta起支持) 为了方便大家在将程序发...
  • guggy
  • guggy
  • 2016年11月02日 10:30
  • 351

简述cocos2d-x 3.0与Cocos2d-x 2.X版本有哪些区别

Cocos2d将符合语义版本控制,这意味着更新不会打破向后兼容性 对整个 API 进行重构清理,隐藏私有属性,命名风格更加一致,移除老的无用的类 大量改进对触摸操作的支持,任意节点都可以处理触摸和多触...
  • juewangdeniqiu
  • juewangdeniqiu
  • 2016年09月01日 22:46
  • 135

小波变换和多分辨率处理

小波变换和多分辨率处理 1.基本概念:    小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变...
  • wp1603710463
  • wp1603710463
  • 2015年12月26日 18:49
  • 2658

泰然 cocos2d-x多分辨率适配方案

原址为:http://www.ityran.com/archives/2911?cb=016555509017780423,好东西必须得收藏。 designResolutionSize设置的是资源背景...
  • u011922261
  • u011922261
  • 2014年02月28日 23:41
  • 683

cocos2d-x 手机屏幕多分辨率适应的问题。

cocos2d-x在开发游戏时 常常会遇到手机屏幕分辨率不统一,导致加载到不同分辨率下显示出游戏效果出现不一致的问题。 在cocos2d-x 2.0版本以后可以使用 virtual voi...
  • lkysz0000
  • lkysz0000
  • 2013年08月22日 10:49
  • 712

Cocos2d-x教程(27)-Cocos2d-x 2.2.x tolua++使用方法

Cocos2d-x 2.2.x版本使用tolua++工具绑定自定义C++方法到Lua
  • u012945598
  • u012945598
  • 2014年04月29日 22:59
  • 2319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x 2.x适应多平台多分辨率的方案
举报原因:
原因补充:

(最多只允许输入30个字)