加载界面
#define SPLASHLAYER_H_
#include "cocos2d.h"
class SplashLayer : public cocos2d::CCLayer {
public:
static cocos2d::CCScene *scene();
virtual bool init();
CREATE_FUNC(SplashLayer);
private:
// 加载资源
void LoadResource(float dt);
// 加载特效声音们
void LoadEffectMusic(float dt);
// 加载背景音乐们
void LoadBgMusic(float dt);
// 加载plist们
void LoadPlist(float dt);
// 开始跳转到主菜单页
void StartGoToMainPage(float dt);
private:
cocos2d::CCProgressTimer *loading_prog_; // 加载的前景文字
};
#endif // SPLASHLAYER_H_
#include "splashlayer.h"
#include "Util/WindowUtil.h"
#include "GamePage.h"
#include "mainpage/mainpage.h"
#include "themepage/themepage.h"
#include "themepage/mainmap.h"
#include "themepage/chaptermanager.h"
#include "common/datamanager.h"
#include "Util/multilanguageutil.h"
#include "Util/MusicUtil.h"
USING_NS_CC;
// 进度条值
static float s_cur_percent = 0;
// 资源们的命名空间
// 把他们弄成一个命名空间仅仅是为了在vs下可以折叠起来
namespace resource {
// 声音特效文件们
const char * kEffectArr[10] = {
};
// 背景音乐文件们
const char * kBgmusicArr[10] = {
};
// plist们
const char * kPlistArr[] = {
"bbb.plist"
};
// 每加载完成一个音效资源进度条加的值
const float kAddValuePerEffect = 1.8f;
// 每加载完成一个背景音乐资源进度条加的值
const float kAddValuePerBgMusic = 3.5f;
// 每加载完成一个plist进度条加的值
const float kAddValuePerPlist = 2.0f;
};
using namespace resource;
CCScene *SplashLayer::scene() {
CCScene *scene = CCScene::create();
scene->addChild(SplashLayer::create());
return scene;
}
bool SplashLayer::init() {
bool ret_value = false;
do {
CC_BREAK_IF (!CCLayer::init());
// 初始化窗口缩放
util::WindowUtil::DoInit();
MultilanguageUtil::initAllStringFromXML();
// 初始化数据管理类
datamanager::DoInit();
datamanager::GuideDataManage::SetTimePlayGame(datamanager::GuideDataManage::GetTimePlayGame()+1);
util::MusicUtil::DoInit();
util::MusicUtil::PreloadBackgroundMusic("music/bg.ogg");
util::MusicUtil::PreloadBackgroundMusic("music/bg1.ogg");
// 章节数据的初始化
ChapterManager::SharedInstance()->InitChapteres();
// 背景
CCSprite *bg = CCSprite::create("LOADING.png");
bg->setPosition(ccp(WIDTH / 2, HEIGHT / 2));
bg->setScaleX(SCALE_X);
bg->setScaleY(SCALE_Y);
addChild(bg);
//电话标签
//CCLabelTTF *x_label_ = CCLabelTTF::create("客服电话**********", "font/fzzzh.ttf", 30);
//x_label_->setPosition(ccp(WIDTH / 2,30));
//x_label_->setColor(ccc3(0xff,0xff,0xff));
//addChild(x_label_);
//CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("bbb.plist");
// 开始加载资源
scheduleOnce(schedule_selector(SplashLayer::LoadResource), 0);
ret_value = true;
} while (0);
return ret_value;
}
void SplashLayer::LoadResource(float dt) {
// 开始加载资源
schedule(schedule_selector(SplashLayer::LoadEffectMusic));
}
void SplashLayer::LoadEffectMusic(float dt) {
static int s_index = 0;
if (s_index == sizeof(kEffectArr) / sizeof(kEffectArr[0])) {
unschedule(schedule_selector(SplashLayer::LoadEffectMusic));
schedule(schedule_selector(SplashLayer::LoadBgMusic));
} else {
// 把音效资源加载到音乐util
// 设音效置进度条百分比
s_index++;
}
}
void SplashLayer::LoadBgMusic(float dt) {
static int s_index = 0;
if (s_index == sizeof(kBgmusicArr) / sizeof(kBgmusicArr[0])) {
unschedule(schedule_selector(SplashLayer::LoadBgMusic));
schedule(schedule_selector(SplashLayer::LoadPlist));
} else {
// 把音乐资源加载到音乐util
// 设置进度条百分比
s_index++;
}
}
void SplashLayer::LoadPlist(float dt) {
static int s_index = 0;
if (s_index == sizeof(kPlistArr) / sizeof(kPlistArr[0])) {
// 设置进度条百分百
scheduleOnce(schedule_selector(SplashLayer::StartGoToMainPage), 1.0f);
} else {
// 把plist资源加载到音乐spriteframe中
// 设置进度条百分比
/*CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(
plist_arr[index]);*/
s_index++;
}
}
void SplashLayer::StartGoToMainPage(float dt) {
CCDirector::sharedDirector()->pushScene(MainPage::scene());
}