cocos2dx,精靈載入圖片之後,利用縮放改變精靈大小
阿新 • • 發佈:2019-02-06
根據圖片建立一個精靈:
auto sprite_back = Sprite::create("login_background.png");
載入了圖片的精靈直接呼叫方法setContentSize() 不起作用,圖片還是該多大多大。
那麼實際上能夠稱該改變大小的就只有縮放setScale(float x,float y);
實際專案中一般都要根據螢幕做適配,一般都是參照螢幕的百分比。
假設這裡有個背景圖,佔滿全屏,即精靈寬=螢幕寬,精靈高=螢幕高
這裡我們獲取縮放比率,然後呼叫縮放方法進行縮放即可
縮放比率X = 螢幕寬/精靈寬
縮放比率Y同理
此時呼叫setContentSize(縮放比率X,縮放比率Y) 即可獲得正常寬高
一般為了不破壞圖片實際寬高比從而導致圖片失真變得模糊,只需要獲取X或者Y就可以直接進行縮放。但背景圖除外。
當需要設定為螢幕百分比的時候:
縮放比率X = 螢幕寬*百分比 /精靈寬
縮放比率Y同理
示例:
//獲取螢幕寬高
Size size = Director::getInstance()->getWinSize();
背景圖:
大小根據螢幕百分比計算,這裡為10%//背景圖 auto sprite_back = Sprite::create("login_background.png"); sprite_back->setPosition(size.width / 2, size.height / 2); //設定位置 sprite_back->setAnchorPoint(Point(0.5, 0.5)); //設定錨點 //根據縮放設定實際大小 Size size_back = sprite_back->getContentSize(); //獲取精靈大小(設定圖片的時候,精靈大小為圖片大小) //根據實際寬度和總寬度,計算期望縮放比率 float scaleX = (float)size.width / (float)size_back.width; float scaleY = (float)size.height / (float)size_back.height; sprite_back->setScale(scaleX,scaleY); //縮放
//百分比精靈圖 auto sprite_pai_back = Sprite::create("lianhuan_button_sure.png"); sprite_pai_back->setPosition(size.width/2,size.height/2); sprite_pai_back->setAnchorPoint(Point(0.5,0.5)); //根據縮放設定實際大小 Size size_pai = sprite_pai_back->getContentSize(); //根據實際寬度和總寬度,計算期望縮放比率 float scaleX_pai = (float)size.width*0.1f / (float)size_pai.width; float scaleY_pai = (float)size.height*0.1f / (float)size_pai.height; sprite_pai_back->setScale(scaleX_pai, scaleY_pai);