这两个功能之间的预期差异是什么:
var size = cc.Director.getInstance().getWinSize();
var sizePx = cc.Director.getInstance().getWinSizeInPixels();
在我的情况下,它们都返回完全相同的值。
在哪些情况下,它们应该返回不同的值?
答案 0 :(得分:2)
在最近的Cocos2dx版本中,给定的答案不再准确,特别是因为框架已经放弃了对显式视网膜模式的支持,有利于为程序员提供独立于屏幕和资产分辨率设置游戏分辨率的能力,必要时执行缩放。
严格来说,函数getWinSize()
会返回您选择的任何分辨率的值(使用CCGLView::setDesignResolution(float, float, ResolutionPolicy)
),以像素为单位; getWinSizeInPixels()
返回设计分辨率,再乘以内容比例因子,再次由CCDirector::setContentScaleFactor(float)
提供。如果您未使用这些函数提供值,Cocos2dx将根据当前平台的任意值选择设计分辨率。例如,在iOS上,它将使用提供的CAEAGLView的大小(以某些情况可能小于实际设备分辨率),getWinSize()
和getWinSizeInPixels()
将返回相同的值。< / p>
如果您要将资源扩展到游戏分辨率,
getWinSize()
和getWinSizeInPixels()
将返回不同的值。在这种情况下,getWinSizeInPixels()
表示如果您不必扩展资源,解决方案将是什么。
一些可能的设置来说明系统的工作原理:
自从我不久前开始研究Cocos2dx以来,我可能有些不对劲,但这是我经过一些测试后得到的结果。
答案 1 :(得分:1)
一个返回点,逻辑像素,其他物理像素。在Retina中,两个值都不同(2x)。