在明白cocos2d-x的坐标后,考虑到屏幕比例适配问题,在开发过程中以getVisibleSize()和getVisibleOrigin(),获取的原点和屏幕尺寸为准进行控件的布局设置,
如:使用精灵作为背景图,且sprite根据屏幕进行相应的缩放。
auto winSize = Director::getInstance()->getWinSize();
Size visibleSize = Director::getInstance()->getVisibleSize();//AnchorPoint
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto *bgImg = Sprite::createWithSpriteFrameName("background.png");//默认的AnchorPoint()为(0.5,0.5).
Rect rect=bgImg->getBoundingBox();
bgImg->setColor(Color3B(100, 200, 100));
bgImg->setPosition(Vec2(visibleSize.width/2+origin.x , visibleSize.height/2+origin.y));//设置图片居中显示,且方便大小缩放
float winw = visibleSize.width; //获取可视宽度
float winh = visibleSize.height;//获取可视高度
float spx = bgImg->getContentSize().width;
float spy = bgImg->getContentSize().height;
bgImg->setScaleX(winw/spx);
bgImg->setScaleY(winh/spy);
this->addChild(bgImg);
其次: getBoundingBox 中得 Size.width .height 显示图片真实大小 (考虑缩放和不缩放)
getContentSize 纹理图片大小 (不考虑 缩放不缩放)
getTextureRect 当前的纹理在总纹理的位置 (不考虑 缩放不缩放)
以上是个人参考网上人家的理解和个人的代码的简单实践得出,如有错误还请谅解。