1. 程式人生 > >cocos2dx,精靈載入圖片之後,利用縮放改變精靈大小

cocos2dx,精靈載入圖片之後,利用縮放改變精靈大小

根據圖片建立一個精靈:

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();

背景圖:
//背景圖
	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);	//縮放
大小根據螢幕百分比計算,這裡為10%
//百分比精靈圖
	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);