Cocos2d-x 3.4 進度條總結,cocos2d-x3.4
Cocos2d-x 3.4進度條
旋轉進度條
auto s =Director::getInstance()->getWinSize();
auto to1 =Sequence::createWithTwoActions(ProgressTo::create(2,100),ProgressTo::create(0,0));//旋轉進度條
auto left =ProgressTimer::create(Sprite::create("Images/grossini.png"));
left->setType(ProgressTimer::Type::RADIAL);
left->setReverseProgress(true);//反轉執行
addChild(left);
left->setPosition(100,s.height/2);
left->runAction(RepeatForever::create(to1));
水平進度條
auto to2 =Sequence::createWithTwoActions(ProgressTo::create(2,100),ProgressTo::create(0,0));
auto left =ProgressTimer::create(Sprite::create("Images/grossini.png"));
left->setType(ProgressTimer::Type::BAR);//BAR水平進度條
left->setMidpoint(Vec2(1,0));//從右至左 ,Vec2(0,0)為從左至右
left->setBarChangeRate(Vec2(1,0));
addChild(left);
left->setPosition(100,s.height/2);
left->runAction(RepeatForever::create(to2));
垂直進度條
auto t3 =Sequence::createWithTwoActions(ProgressTo::create(2,100),ProgressTo::create(0,0));
auto left =ProgressTimer::create(Sprite::create("Images/grossini.png"));
left->setType(ProgressTimer::Type::BAR);
left->setMidpoint(Vec2(0,1));//從上到下,Vec2(0,0)為從下到上
left->setBarChangeRate(Vec2(0,1));
addChild(left);
left->setPosition(100,s.height/2);
left->runAction(RepeatForever::create(t3));
BAR類型進度條設定變化
auto t5 =Sequence::createWithTwoActions(ProgressTo::create(2,100),ProgressTo::create(0,0));
auto left =ProgressTimer::create(Sprite::create("Images/grossini.png"));
left->setType(ProgressTimer::Type::BAR);
left->setMidpoint(Vec2(0.5f,0.5f));
left->setBarChangeRate(Vec2(1,1));//從中心向四周擴散,Vec2(1,0)從中心向兩邊擴散,Vec2(0,1)從中心向山下擴散
addChild(left);
left->setPosition(s.width/2,s.height/2);
left->runAction(RepeatForever::create(t5));
可變換旋轉中心的旋轉進度條
auto t4 =Sequence::createWithTwoActions(ProgressTo::create(2,100),ProgressTo::create(0,0));
auto left =ProgressTimer::create(Sprite::create("Images/grossini.png"));
left->setType(ProgressTimer::Type::RADIAL);
left->setMidpoint(Vec2(0.75f,0.25f));//設定旋轉中心點
left->setBarChangeRate(Vec2(0,1));
addChild(left);
left->setPosition(100,s.height/2);
left->runAction(RepeatForever::create(t4));
進度條搭配其他動作
auto t6 =Sequence::createWithTwoActions(ProgressTo::create(6,100),ProgressTo::create(0,0));
auto hint =Sequence::create(TintTo::create(1,255,0,0),TintTo::create(1,0,255,0),TintTo::create(1,0,0,255),nullptr);
auto left =ProgressTimer::create(Sprite::create("Images/grossini.png"));
left->setType(ProgressTimer::Type::BAR);
left->setMidpoint(Vec2(0.5f,0.5f));
left->setBarChangeRate(Vec2(1,0));
addChild(left);
left->setPosition(100,100);
left->runAction(RepeatForever::create(t6->clone()));
left->runAction(RepeatForever::create(hint->clone()));
使用緩衝中圖片載入進度條,通過載入plist檔案
auto t7 =Sequence::createWithTwoActions(ProgressTo::create(6,100),ProgressTo::create(0,0));
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("zwoptex/grossini.plist");
auto left =ProgressTimer::create(Sprite::createWithSpriteFrameName("grossini_dance_01.png"));
left->setMidpoint(Vec2(0.5f,0.5f));
left->setBarChangeRate(Vec2(1,0));
addChild(left);
left->setPosition(300,300);
left->runAction(RepeatForever::create(t7->clone()));