遊戲開發中常遇到:背景圖尺寸與設計分辨率不匹配,需按比例縮放填滿螢幕且不變形。核心公式:縮放係數 = 目標尺寸 / 原始尺寸。
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite* backGround = CCSprite::create("./Images/menu/ingamepig.png");
CC_BREAK_IF(!backGround);
// 計算 X/Y 方向獨立縮放係數
float scaleX = size.width / backGround->getContentSize().width;
float scaleY = size.height / backGround->getContentSize().height;
// 分別設置 X/Y 縮放(非等比,填滿螢幕)
backGround->setScaleX(scaleX);
backGround->setScaleY(scaleY);
// 置於螢幕中心
backGround->setPosition(ccp(size.width/2, size.height/2));
this->addChild(backGround, 0, 0);
原圖顯示:

縮放後填滿螢幕:

MIN(scaleX, scaleY) 統一縮放,邊緣留白CC_CONTENT_SCALE_FACTOR 影響CCSpriteFrameCache 避免重複載入此技巧適用於啟動畫面、背景圖、UI 九宮格非拉伸區等場景。