cocos2dx 計數條設計

/當遊戲中需要進行滾動計分時 爲了獲得滾動數字 我們可以首先寫一個計分函數 放入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));

 }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章