/當遊戲中需要進行滾動計分時 爲了獲得滾動數字 我們可以首先寫一個計分函數 放入update中進行調用每幀加一個固定的分數
//加入分數記錄框
auto framCache=SpriteFrameCache::getInstance();
framCache->addSpriteFramesWithFile("config.plist","config.png");
auto fram=framCache->getSpriteFrameByName("scorebar.png");
auto title=Sprite::createWithSpriteFrame(fram);
title->setPosition(Point(size.width-210,size.height-15));
addChild(title);
//初始五個0
for(int i=0;i<5;i++)
{
auto number=Sprite::create("111.png");
ui=number->getTexture();
number->setTextureRect(CCRectMake(24.8,0,9,35)); //一定要注意對精靈的裁剪
number->setPosition(Point(size.width-50-i*15,size.height-10));
bits[i]=number;
addChild(number,1);
}
for(int j=0;j<5;j++)
{
auto number1=Sprite::create("111.png");
ui1=number1->getTexture();
number1->setTextureRect(CCRectMake(24.8,0,9,35));
number1->setPosition(Point(size.width-275-j*15,size.height-10));
bits1[j]=number1;
addChild(number1,1);
}
mark=0; //將分數初始爲0
this->scheduleUpdate(); //調用update函數
return true;
}
//計分函數(運用整除和取餘的方法不停的設置個十百千萬位 運用setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35))對精靈進行裁剪和貼圖
void GameMark::addNumber(int var)
{
mark+=var;
//個位
int temp=mark%10;
if(temp>0)
{
bits[0]->setTexture(ui);
bits[0]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
bits1[0]->setTexture(ui);
bits1[0]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
}
else
{
bits[0]->setTexture(ui);
bits[0]->setTextureRect(CCRectMake(21,0,13,35));
bits1[0]->setTexture(ui);
bits1[0]->setTextureRect(CCRectMake(21,0,13,35));
}
//十位
temp=(mark%100)/10;
if(temp>0)
{
bits[1]->setTexture(ui);
bits[1]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
bits1[1]->setTexture(ui);
bits1[1]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
}
else
{
bits[1]->setTexture(ui);
bits[1]->setTextureRect(CCRectMake(21,0,13,35));
bits1[1]->setTexture(ui);
bits1[1]->setTextureRect(CCRectMake(21,0,13,35));
}
//百位
temp=(mark%1000)/100;
if(temp>0)
{
bits[2]->setTexture(ui);
bits[2]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
bits1[2]->setTexture(ui);
bits1[2]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
}
else
{
bits[2]->setTexture(ui);
bits[2]->setTextureRect(CCRectMake(21,0,13,35));
bits1[2]->setTexture(ui);
bits1[2]->setTextureRect(CCRectMake(21,0,13,35));
}
//千位
temp=(mark%10000)/1000;
if(temp>0)
{
bits[3]->setTexture(ui);
bits[3]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
bits1[3]->setTexture(ui);
bits1[3]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
}
else
{
bits[3]->setTexture(ui);
bits[3]->setTextureRect(CCRectMake(21,0,13,35));
bits1[3]->setTexture(ui);
bits1[3]->setTextureRect(CCRectMake(21,0,13,35));
}
//萬位
temp=mark/10000;
if(temp>0)
{
bits[4]->setTexture(ui);
bits[4]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
bits1[4]->setTexture(ui);
bits1[4]->setTextureRect(CCRectMake(24.8+temp*12.3,0,9,35));
}
else
{
bits[4]->setTexture(ui);
bits[4]->setTextureRect(CCRectMake(21,0,13,35));
bits1[4]->setTexture(ui);
bits1[4]->setTextureRect(CCRectMake(21,0,13,35));
}
}