日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

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; }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品三级在线 | jizz中国女人高潮 | 国产精品成人av | 国产精品国产成人国产三级 | 日韩黄色一级毛片 | 国产v日产∨综合v精品视频 | 国产一区二区精品 | 2022国产精品| 国产亚洲精品久久久久久牛牛 | 国产精品麻豆欧美日韩ww | 爱爱视频在线观看 | 国产91亚洲精品 | 日本一级囗交免费 | 欧美成人综合视频 | 日本精品视频一区二区三区四区 | 国产高清在线观看 | www.99精品| 一级视频在线免费观看 | 日韩精品一区二区视频 | 久久久二区 | 丰满少妇高潮惨叫久久久久 | 亚洲免费视频网站 | 亚洲视频欧美视频 | 欧美视频亚洲视频 | 色一色综合 | 国产精品久久久久久久av大片 | 一级毛片免费 | 欧美一区二区性 | 欧美精品成人 | www.一区二区三区 | 日韩一级片 | 一级午夜| av在线激情 | 国产最新精品视频 | 亚洲老板91色精品久久 | 91av久久| 黄网页在线观看 | av免费看网站 | 久久av在线 | а√天堂中文最新版资源 | 亚洲一区二区电影网 |