cc.Director中的getWinSize getWinSizeInPixels有什么区别?

时间:2014-05-01 22:50:56

标签: cocos2d-x cocos2d-x-3.0 cocos2d-js

这两个功能之间的预期差异是什么:

    var size = cc.Director.getInstance().getWinSize();
    var sizePx = cc.Director.getInstance().getWinSizeInPixels();

在我的情况下,它们都返回完全相同的值。

在哪些情况下,它们应该返回不同的值?

2 个答案:

答案 0 :(得分:2)

在最近的Cocos2dx版本中,给定的答案不再准确,特别是因为框架已经放弃了对显式视网膜模式的支持,有利于为程序员提供独立于屏幕和资产分辨率设置游戏分辨率的能力,必要时执行缩放。

严格来说,函数getWinSize()会返回您选择的任何分辨率的值(使用CCGLView::setDesignResolution(float, float, ResolutionPolicy)),以像素为单位; getWinSizeInPixels()返回设计分辨率,再乘以内容比例因子,再次由CCDirector::setContentScaleFactor(float)提供。如果您未使用这些函数提供值,Cocos2dx将根据当前平台的任意值选择设计分辨率。例如,在iOS上,它将使用提供的CAEAGLView的大小(以某些情况可能小于实际设备分辨率),getWinSize()getWinSizeInPixels()将返回相同的值。< / p> 如果您要将资源扩展到游戏分辨率,

getWinSize()getWinSizeInPixels()将返回不同的值。在这种情况下,getWinSizeInPixels()表示如果您不必扩展资源,解决方案将是什么。

一些可能的设置来说明系统的工作原理:

  • 1组图像,1个设计分辨率,许多设备分辨率=每当设计时缩放的图像!=设备(低级别的高级外观质量,不必要的内存/ CPU使用率),单分辨率布局代码(可能更简单)
  • 多组图像,1种设计分辨率,多种设备分辨率=较少需要缩放图像,因为不同的资源覆盖了更广泛的目标范围,保留了单一分辨率的布局代码
  • 多组图像,多种/可采用的设计分辨率,许多设备分辨率=更少需要扩展,代码必须明确不知道分辨率(可能更复杂)

自从我不久前开始研究Cocos2dx以来,我可能有些不对劲,但这是我经过一些测试后得到的结果。

答案 1 :(得分:1)

一个返回点,逻辑像素,其他物理像素。在Retina中,两个值都不同(2x)。