cocos2dx實現加載頁loading頁,加載進度條和加載字樣(附代碼)

使用VS2013實現加載頁,包括加載進度條和加載字樣,詳細代碼如下:

LoadingLayer.h:

#include

#include "cocos2d.h"

#include "OnlyOneShotUtils.h"

using namespace cocos2d;

class LoadingLayer : public Scene {

public:

static Scene* createScene();

CREATE_FUNC(LoadingLayer);

void callback();

public:

virtual bool init();

static Sprite* getSprite(std::string pStr);

};

#endif

LoadingLayer.cpp:

#include "LoadingLayer.h"

#include

#include "GameData.h"

Scene* LoadingLayer::createScene(){

auto scene=Scene::create();

auto layer=LoadingLayer::create();

scene->addChild(layer);

return scene;

}

bool LoadingLayer::init()

{

if (!Scene::init()) {

return false;

}

Size visibleSize = Director::getInstance()->getVisibleSize();

Vec2 origin = Director::getInstance()->getVisibleOrigin();

auto spriteLoading = Sprite::create("loading.png");//創建精靈 加載頁

auto sprite_jiazai1 = Layer::create();//創建加載頁layer

sprite_jiazai1->addChild(spriteLoading);//把加載頁圖片放進layer中

// position the sprite on the center of the screen 設置精靈的位置在屏幕的中心

spriteLoading->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));

//設置layer位置座標

sprite_jiazai1->setPosition(Vec2(0, 0));

// add the sprite as a child to this layer 添加一個精靈到layer層

this->addChild(sprite_jiazai1, 0);

//創建一個精靈 加載字樣

auto jiazaiA = Sprite::create("1.png");

//設置座標

jiazaiA->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 5-50));

//添加到當前層

this->addChild(jiazaiA);

//創建序列幀動畫

auto animation = Animation::create();

//設置動畫名字數組的長度

char nameSize[20] = { 0 };

//動畫的循環 2張圖片

for (int i = 1; i < 3; i++)

{

//循環遍歷

sprintf(nameSize, "%d.png", i);

//添加到序列幀動畫

animation->addSpriteFrameWithFile(nameSize);

}

//設置動畫幀的時間間隔

animation->setDelayPerUnit(0.30f);

//設置播放循環 一直播放為 -1

animation->setLoops(-1);

//設置動畫結束後到第一幀

animation->setRestoreOriginalFrame(true);

//創建動畫動作

auto animate = Animate::create(animation);

//播放動畫

jiazaiA->runAction(animate);

auto cutAction = CallFunc::create(CC_CALLBACK_0(LoadingLayer::callback, this));//callback 進入下一個scene的方法

CCFiniteTimeAction* action2 = CCSequence::create(CCDelayTime::create(2), cutAction, NULL);

sprite_jiazai1->runAction(action2);

//-------------------------------------------------------------------------------------

//1.進度條

auto loadBkSpr = CCSprite::create("1L.png");//加載進度條的邊框精靈

loadBkSpr->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2 - visibleSize.height / 4-120));

//loadBkSpr->setScale(1.0f);//設置比例

this->addChild(loadBkSpr);

auto loadBar = CCProgressTimer::create(CCSprite::create("2L.png"));

loadBar->setPercentage(1.0f); //設置百分比,初始為0

loadBar->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2 - visibleSize.height / 4-120));

loadBar->setType(kCCProgressTimerTypeBar);//設置進度條為水平類型

loadBar->setBarChangeRate(ccp(1, 0));//設置進度條的寬高變化,此處為寬度變化

loadBar->setMidpoint(ccp(0, 0));//設置動畫運動方向從左至右

//loadBar->setScale(3.0f);設置比例

this->addChild(loadBar);

//設置一個動作,令進度條2秒內讀取到百分之100

CCProgressTo * action = CCProgressTo::create(2, 100);

//加載完畢.移除加載動畫,進入遊戲場景

loadBar->runAction(action);

return true;

}

void LoadingLayer::callback(){

//Main();

Director::getInstance()->replaceScene(MainScene::createScene());

}

cocos2dx實現加載頁loading頁,加載進度條和加載字樣(附代碼)


分享到:


相關文章: