多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > cocos2dx3.2利用ProgressTimer組合成評分控件

cocos2dx3.2利用ProgressTimer組合成評分控件

來源:程序員人生   發布時間:2014-11-16 05:26:58 閱讀次數:3226次

1、制作背景

現在很多游戲或利用需要評分,就是1般來講滿分10分,1般用星星來表示。
那末cocos2dx里面如何制作評分這樣的控件呢?
我的打算是進度條組合成績行了。

2、材料準備


如上圖所示,即2顆小星星便可。

3、終究效果



4、代碼實現

///////////////////////////////////////////////////////////////////////////////// /***************************ScoreBar Class**************************************/ ///////////////////////////////////////////////////////////////////////////////// class ScoreBar:public cocos2d::Node { public: CREATE_FUNC(ScoreBar); static ScoreBar* create(float mPercentage); CC_CONSTRUCTOR_ACCESS: ScoreBar(); ~ScoreBar(); virtual bool init(); virtual bool initSelf(); virtual bool initBackGround(); virtual bool initProgress(); public: void setPercent(unsigned char mPercentage); float getPercent() const; private: cocos2d::Vector<cocos2d::ProgressTimer*>* _progressBars; cocos2d::Node* _backGround; };

///////////////////////////////////////////////////////////////////////////////// /***************************ScoreBar Class**************************************/ ///////////////////////////////////////////////////////////////////////////////// ScoreBar::ScoreBar():_progressBars(nullptr), _backGround(nullptr) { } ScoreBar::~ScoreBar() { _progressBars->clear(); CC_SAFE_DELETE(_progressBars); CC_SAFE_RELEASE(_backGround); } ScoreBar* ScoreBar::create( float mPercentage ) { auto bar = new ScoreBar(); if (bar&&bar->init()) { bar->setPercent(mPercentage); bar->autorelease(); return bar; } CC_SAFE_DELETE(bar); bar = nullptr; return nullptr; } bool ScoreBar::init() { bool ret = false; if (Node::init()) { IF_RETURN_FALSE(!initSelf()); return true; } return ret; } bool ScoreBar::initSelf() { IF_RETURN_FALSE(!initBackGround()); IF_RETURN_FALSE(!initProgress()); return true; } bool ScoreBar::initBackGround() { unsigned char elementCount = 5; const std::string elementBg = "grid/star_default.png"; _backGround = Node::create(); IF_RETURN_FALSE(!_backGround); addChild(_backGround); for (unsigned char i=0;i<elementCount;i++) { auto elementSprite = Sprite::create(elementBg); IF_RETURN_FALSE(!elementSprite); _backGround->addChild(elementSprite); elementSprite->setPosition(elementSprite->getContentSize().width*i,0.0f); } return true; } bool ScoreBar::initProgress() { unsigned char elementCount = 5; const std::string elementPre = "grid/star_show.png"; float w = 0.0f; float h = 0.0f; if (nullptr==_progressBars) { _progressBars = new cocos2d::Vector<cocos2d::ProgressTimer*>(); } for (unsigned char i=0;i<elementCount;i++) { auto elemntSprite = Sprite::create(elementPre); IF_RETURN_FALSE(!elemntSprite); w = elemntSprite->getContentSize().width; h = elemntSprite->getContentSize().height; auto mProgressBar = ProgressTimer::create(elemntSprite); IF_RETURN_FALSE(!mProgressBar); addChild(mProgressBar); _progressBars->pushBack(mProgressBar); mProgressBar->setPosition(elemntSprite->getContentSize().width*i,0.0f); mProgressBar->setType(ProgressTimer::Type::BAR); mProgressBar->setMidpoint(Vec2(0,0)); mProgressBar->setBarChangeRate(Vec2(1, 0)); } this->setContentSize(Size(w*elementCount,h)); //CC_SAFE_RELEASE(baseSprite); return true; } void ScoreBar::setPercent( unsigned char mPercentage ) { unsigned char elementCount = 5; //the total num of progress' star unsigned char perFull = 100/elementCount; //per star full percent unsigned int per = mPercentage/perFull; // full star num unsigned char remain = (mPercentage%perFull)*elementCount; //the remain percent for(unsigned char i=0;i<_progressBars->size();i++) { if(i<per) _progressBars->at(i)->setPercentage(100); else _progressBars->at(i)->setPercentage(0); } if (per<_progressBars->size()) { _progressBars->at(per)->setPercentage(remain); } } float ScoreBar::getPercent() const { float percent = 0; unsigned char elementCount = 5; for(auto e:*_progressBars) { percent+=e->getPercentage(); } return percent/elementCount; }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 羞羞免费网页登界面入口 | 国产成人综合亚洲一区 | 看一级毛片免费观看视频 | 免费在线观看一级毛片 | 最近中文字幕视频在线资源 | 色琪琪一本到影院 | 亚洲第一页国产 | 综合 欧美 亚洲日本 | 久久艹综合 | 国产视频第一页 | 中文字幕天天躁夜夜狠狠综合 | 久久国产精品1区2区3区网页 | 欧美18+| 国产精品9999久久久久 | 在线亚洲不卡 | 午夜视频免费在线观看 | 亚洲欧美精品一区天堂久久 | 色人阁亚洲| 另类小说综合网 | 久久网国产 | 日韩欧美区| 久久免费毛片 | 欧美综合在线播放 | 精品国产免费第一区二区三区日韩 | 中文字幕在线精品视频入口一区 | 美女福利影院 | 亚洲色图男人天堂 | 中文字幕一区二区三区亚洲精品 | 69视频最新在线观看 | 一区二区三区在线播放 | 免费激情视频网站 | 精品无人区一区二区三 | 国产福利在线观看永久免费 | 国产成人精选视频69堂 | 欧美18videosex性欧美乱任 | 不卡一级aaa全黄毛片 | 亚洲欧美天堂综合久久 | 国产精品久久亚洲一区二区 | 最新欧美精品 | 欧美高清正版在线 | 国产国产成人精品久久 |