Cocos2d-x屏幕适配原理分析

http://www.devstore.cn/new/newInfo/659.html

setPosition()的变化

之前版本可能已经习惯了CCNode::setPosition(const CCPoint &position);和CCNode::setPositionInPixel(const CCPoint &position);但在新的版本里,只有setPosition(const CCPoint &position); 

这里传入的参数不是像素,也和传统的point有不同,它指的是在designResolutionSize参照下的坐标。

验证交给你自己来:比如设计分辨率为480x320,设置一个sprite的位置为240,160,在480x320分辨率下会发现它在屏幕正中,模拟其他分辨率,960x640,1024x768,会发现它依然在屏幕中心,这就可了解240,160这个值跟实际屏幕分辨率已经无关了,只和designResolutionSize有关,理解这一点至关重要,是后续开发正确空间感的基础

使用kResolutionNoBorder策略时要注意的

CCSize szVisible = CCDirector::sharedDirector()->getVisibleSize();

CCPoint posVisible = CCDirector::sharedDirector()->getVisibleOrigin();

使用该策略时,因为标准背景图可能会超出屏幕,所以设置位置时需要一个可视矩形为基准。可以这样理解,szVisible就是你在实际设备上能看到的有效区域(屏幕上能看到的区域)的宽高,posVisible就是这个有效区域的起始坐标,和szVisible构成一个可视矩形,一般来说这个可视矩形是设计分辨率下可视矩形的子集。

猜你喜欢

转载自blog.csdn.net/ylwdi/article/details/81875909