首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

cocos2d-x getContentSize跟getContentSizeInPixels区别

2012-08-29 
cocos2d-x getContentSize和getContentSizeInPixels区别cocos2d-x中使用getContentSize获得的就是逻辑点的

cocos2d-x getContentSize和getContentSizeInPixels区别
cocos2d-x中使用getContentSize获得的就是逻辑点的大小,而getContentSizeInPixels获得的就是像素点的大小。 像素点和逻辑点的对应关系为:逻辑点的大小 = 像素大小 / contentScaleFactor。

如果在高分辨率的平台上(如Iphone4),使用非高分辨率的图片资源,且设置contentScaleFactor为1.0,则IOS的Core Animation compositor 会自动拉伸非高分辨率的资源来适配, 使其在非高分辨率和高分辨率设备上的视觉效果是一样的。

如果用户设置contentScaleFactor 为(1.0,2.0]之间的值,系统会使用用户设置的拉伸值。

cocos2d-x提供了接口来设置contentScaleFactor, 接口为:CCDirector::setContentScaleFactor。

了解了IOS分辨率的内幕后,再来解释一下问题产生的原因。

问题1: 因为设置enableRetinaDisplay(false),contentScaleFactor为1.0,所以图片会被当成非高清资源,在显示的时候水平和竖直的分辨率都会被拉伸2倍。

问题2:因为设置enableRetinaDisplay(true), contentScaleFactor为2.0,所以图片会显示成原有的像素大小。但是设置位置是使用setPosition,该接口设置的是逻辑位置。因为之前的位置是参考800*480的屏幕大小来设置的,所以当contentScaleFactor为2.0时,就相当于参考屏幕的像素大小为1600*960, 所以精灵的位置等都出现了错误。


建议使用逻辑点

热点排行