cocos2d-x屏幕 适配

来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:25 点击:

// initialize director

Director* pDirector = Director::getInstance();

EGLView* pEGLView = EGLView::getInstance();


pDirector->setOpenGLView(pEGLView);


Size win_size=pDirector->getWinSize();//屏幕尺寸

int w=win_size.width;

int h=win_size.height;

int design_w=1280;

int design_h=720;


float s=w/(float)h;


float scale_w=w/(float)design_w;//宽度缩放比例

float scale_h=h/(float)design_h;//高度缩放比例


float scale=1;

//做分支处理(以宽度做为判断依据)

if(w>design_w){//屏幕尺寸比设计尺寸大,需要做放大处理

if(scale_w>scale_h){//宽度放大比例大于高度放大比例 先确定比例小的尺寸 即高度

design_h=720;

design_w=(int)(design_h/s);

}else{//宽度放大比例小于高度放大比例,先确定比例小的尺寸,即宽度

design_w=1280;

design_h=(int)(design_w/s);

}

}else if(w

if(scale_w

design_w=1280;

design_h=(int)(design_w/s);

}else{//宽度放大比例小于高度放大比例,先确定比例小的尺寸,即宽度

design_h=720;

design_w=(int)(design_h*s);

}

}else{

design_w=1280;

design_h=(int)(design_w/s);

}

//按照这个尺寸 达到 全屏显示

pEGLView->setDesignResolutionSize(design_w, design_h, ResolutionPolicy::SHOW_ALL);




参考:
从Cocos2d-x 2.0.4开始,Cocos2d-x提出了自己的多分辨率支持方案,废弃了之前的retina相关设置接口,提出了design resolution概念。
有以下相关接口:
  1. CCEGLView::sharedOpenGLView()->setDesignResolutionSize() //设计分辨率大小及模式
  2. CCDirector::sharedDirector()->setContentScaleFactor() //内容缩放因子
  3. CCFileUtils::sharedFileUtils()->setResourceDirectory() //deprecated
  4. CCFileUtils::sharedFileUtils()->setSearchPaths() //资源搜索路径
  5. CCEGLView::sharedOpenGLView()->getFrameSize() //屏幕分辨率
  6. CCDirector::sharedDirector()->getWinSize() //设计分辨率
  7. CCDirector::sharedDirector()->getVisibleSize() //设计分辨率可视区域大小
  8. CCDirector::sharedDirector()->getVisibleOrigin() //设计分辨率可视区域起点 从cocos2d-2.1beta3-x-2.1.1开始,CCFileUtils::sharedFileUtils()->setResourceDirectory()被新接口CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath)替代 从Cocos2d-x 2.1.3开始,新加入了两种ResolutionPolicy(kResolutionFixedHeight, kResolutionFixedWidth),共5中模式。 官方分别在Multi_resolution_support 和 Mechanism_of_loading_resources有介绍。 本文从引擎使用者角度分析Cocos2d-x的多分辨率适配技术。 从Retina 到 design resolution在Cocos2d-x 2.0.4之前,有Retina的概念,这个是从cocos2d-iphone过来的概念。 cocos2d-iphone为了支持Retina iphone 设备,使用了-hd等后缀来区分iphone和Retine iphone的图片资源。在设计游戏的时候,使用point 坐标系,而非真正的pixel坐标系。这点和iOS native应用开发提出的point概念一至,不用修改代码,就能在640×960的设备上跑之前320×480的程序,只是图片会看起来模糊,一旦加入@2x的图片,iOS自动加载@2x的图片,实现对Retna iphone的支持。 point坐标系,在一定范围内能解决多分辨率支持的问题。但是当iphone5,ipad 3出来以后,iOS总共有5个分辨率需要支持,如果做一个universal的程序,是相当痛苦的。point坐标系并不能完全解决问题,android上的分辨率情况更加复杂。 design resolution应该是从point坐标系进化过来的概念,目的是屏蔽设备分辨率,精灵坐标都在design resolution上布局,但要实现这个目标并不简单。Cocos2d-x提供了一组相关的接口和5种分辨率适配策略,哪种策略才是我们需要的,下面我们一同探寻。 具体参考:http://www.cocoachina.com/applenews/devnews/2013/0809/6767.html
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1