cocos2d-x中的尺寸函数繁多,官方文档对各种尺寸没有很好的描述,网上文章更加寥寥,对尺寸和位置的理解如果不到位,写代码就非常困难,需要猜测尝试,效率低下。这个文章我将研究一些我所迷惑的尺寸函数,记录在此。

先看如下代码:

bool AppDelegate::applicationDidFinishLaunching() {// initialize directorCCDirector* pDirector = CCDirector::sharedDirector();CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();pDirector->setOpenGLView(pEGLView);pDirector->getWinSize();pDirector->getWinSizeInPixels();pDirector->getVisibleSize();pEGLView->getFrameSize();pEGLView->getDesignResolutionSize();pEGLView->getVisibleSize();

在applicationDidFinishLaunching中,我们上面函数调用分别是什么意思呢,粗略的说是窗口大小呗,通过CCLOG我们把调试信息打印出来,代码变成如下:

CCSize size;size = pDirector->getWinSize();CCLOG("width = %f height = %f, pDirector->getWinSize", size.width, size.height);size = pDirector->getWinSizeInPixels();CCLOG("width = %f height = %f, pDirector->getWinSizeInPixels", size.width, size.height);size = pDirector->getVisibleSize();CCLOG("width = %f height = %f, pDirector->getVisibleSize", size.width, size.height);size = pEGLView->getFrameSize();CCLOG("width = %f height = %f, pEGLView->getFrameSize", size.width, size.height);size = pEGLView->getDesignResolutionSize();CCLOG("width = %f height = %f, pEGLView->getDesignResolutionSize", size.width, size.height);size = pEGLView->getVisibleSize();CCLOG("width = %f height = %f, pEGLView->getVisibleSize", size.width, size.height);

打印出来调试信息如下:

从调试信息看,默认的程序,这些尺寸都是一样的,是有点头疼吧,都是一样的,你搞那么多尺寸干嘛呢.......

为了让这些值不一样,我们试着加一些代码。加一行代码如下:

bool AppDelegate::applicationDidFinishLaunching() {// initialize directorCCDirector* pDirector = CCDirector::sharedDirector();CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();pDirector->setOpenGLView(pEGLView);pDirector->setContentScaleFactor(2.0f);CCSize size;size = pDirector->getWinSize();CCLOG("width = %f height = %f, pDirector->getWinSize", size.width, size.height);size = pDirector->getWinSizeInPixels();CCLOG("width = %f height = %f, pDirector->getWinSizeInPixels", size.width, size.height);size = pDirector->getVisibleSize();CCLOG("width = %f height = %f, pDirector->getVisibleSize", size.width, size.height);size = pEGLView->getFrameSize();CCLOG("width = %f height = %f, pEGLView->getFrameSize", size.width, size.height);size = pEGLView->getDesignResolutionSize();CCLOG("width = %f height = %f, pEGLView->getDesignResolutionSize", size.width, size.height);size = pEGLView->getVisibleSize();CCLOG("width = %f height = %f, pEGLView->getVisibleSize", size.width, size.height);

增加了一行代码 pDirector->setContentScaleFactor(2.0f);这个函数从字面上的解释是设置缩放因子,参数为2,输出调试信息如下:

这个函数影响了pDirector->getWinSizeInPixels也就是说,让窗口的分辨率变大了,其他没变,这里的分辨率是cocos2dx自定义的这种分辨率,和屏幕分辨率没有关系

这样的话,程序运行的结果也变化了

对比以前没有这句话的程序结果:

我们发现480x320的图片,在setContentScaleFactor之后变小了,事实上不是图片变小了,而是窗口的分辨率变大了而已。

按钮之类的也变小了,都变成了一半大小,所以getWinSizeInPixels返回的是窗口的分辨率大小,而这个分辨率大小受

setContentScaleFactor影响。

其实我们通过cocos2dx源代码也可以看到这点:

CCSize CCDirector::getWinSize(void)
{return m_obWinSizeInPoints;
}CCSize CCDirector::getWinSizeInPixels()
{return CCSizeMake(m_obWinSizeInPoints.width * m_fContentScaleFactor, m_obWinSizeInPoints.height * m_fContentScaleFactor);
}

转载于:https://www.cnblogs.com/niulanshan/p/6174984.html

cocos2d-x中的尺寸之一相关推荐

  1. 模型相关:SolidWorks按实际比例创建模型,在Unity中保持尺寸不变

    拟解决问题: 如题实现在SolidWorks按实际比例创建模型,在Unity中保持尺寸不变 解决方法: 1.在SolidWorks中按拟定尺寸创建模型,保存为零件: 2.打开设置-文档属性-单位,修改 ...

  2. 知道焊缝长度如何确定节点板尺寸_钢结构焊缝中焊脚尺寸怎么确定?有没有标准规定或计算公式?...

    展开全部 钢结构焊缝中焊脚尺寸: 1.焊接焊脚高度有两种标注,K和a,K表示在角焊缝横32313133353236313431303231363533e4b893e5b19e3133343135396 ...

  3. 知道焊缝长度如何确定节点板尺寸_钢桁架节点图 中各尺寸确定原则 总结

    本帖最后由 webyl 于 2011-11-24 18:58 编辑9 ^9 q% @% ]$ o! e, S ) W+ L" V( D9 J8 j 节点图中各尺寸确定原则 1.节点板尺寸 节 ...

  4. CSS中的尺寸单位总结

    文章目录 CSS中的尺寸单位总结 CSS中的尺寸单位总结 绝对单位: px(Pixel):像素 (1px = 1/96th of 1in); pt(Point):大约1/72英寸 (1pt = 1/7 ...

  5. 「州晖」工业管道工程中管径尺寸设计研究

    摘要:管道系统中管径的尺寸设计直接影响着管道的运行效率和经济性.本文以工业管道工程为研究对象,对管径尺寸的设计方法进行探讨.首先,对管道系统的运行原理.流体力学原理进行了简要介绍.其次,结合实际工程, ...

  6. 纯css实现div中未知尺寸图片的垂直居中

    1.淘宝的方法 在曾经的"淘宝UED招聘"中有这样一道题目: "使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中.&quo ...

  7. android中的尺寸单位是什么,Android中各种长度尺寸单位(dp,dip,px,sp,pt)的区别

    dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和 QVGA 推荐使用这个,不依赖像素 ...

  8. Android手机中的尺寸单位

    介绍一些Android手机中的常见尺寸单位:px.dp.sp.pt等. 1. px单位 px为pixel的缩写,1px代表一个物理像素点.在Android开发中,很少使用px单位,因为同样100px的 ...

  9. html版心宽度怎么设置,Word中版心尺寸是什么意思?怎样设置版心尺寸?

    回答: 1.首先我们需要打开单词并进入主界面.然后单击主界面功能区中的"页面布局",打开与页面和布局相关的功能设置界面.我们需要的单词版本设置在里面. 2.之后点击页面布局里面的, ...

最新文章

  1. 博途v15安装过程中提示出错_博途V15.1安装及无限重启和.net3.5SP1错误处理解决方法...
  2. 算法竞赛入门经典读书笔记(四)7.3子集生成
  3. PyQt5 技巧篇-按钮竖排显示方法,Qt Designer设置按钮竖排显示。
  4. see的口语高频用法
  5. ROS学习之节点间话题通信的
  6. C# 基础知识 (四).C#简介及托管代码
  7. AI没有偏见?它们从人类的语言中学会了性别和种族歧视
  8. 从单机应用到微服务,用户认证走几步?
  9. 洛谷P1080-国王游戏-贪心+高精度
  10. WindowsXP命令行修改服务启动选项
  11. 【英语学习】【WOTD】peer-to-peer 释义/词源/示例
  12. 中芯国际科创板上市发行价定为27.46元/股,募资或超500亿元
  13. 做完c语言通讯录系统后的小结,c语言通讯录管理系统的总结
  14. 代码比较工具——DiffMerge的安装教程
  15. html加水平线紧挨文字,html怎么设置水平线与文字的距离
  16. XtraReport中改变文字方向
  17. CCF NOI1107 成人礼
  18. Airsim中运行OpenVINS和VINS_Fusion
  19. 十个最好的免费网络硬盘
  20. 彻底解决共享打印机时报错误代码0x0000011b或0x00000709或0x000006d9提示错误系统Win10/Win8/Win7/XP等

热门文章

  1. 【经典算法】第三回:插入排序
  2. pythonunicode和str_python unicode 和 str 类型的关系
  3. Python性能测试方法
  4. Zipkin分布式任务追踪
  5. 《众妙之门——自由网站设计师成功之道》一1.6 创造性地处理行政事务性工作...
  6. PowerEdge r730xd 安装centos 6.7
  7. uploadify 初始化的时候会请求当前页面地址
  8. 微信公众平台开发(77) 图片下载
  9. NTFS格式分区大小数值表
  10. bin和sbin区别