#ifndef __LOADSCENE_H__ #define __LOADSCENE_H__ #include "GameFrameHead.h" class CGameScene; class CLoadScene : public cocos2d::CCLayer { public: enum PmgressbarId { _PmgressbarDialog = 100, _PmgressbarPic = 1001, }; public: CLoadScene(); virtual ~CLoadScene(void); static CCScene* create(); bool init(); public: //加载资源 void loadRes(); //读进度回调函数 //void loadingCallBack(CCObject *obj); protected: void replaceMainlScene(); //场景放到这里创建 //把创建的场景加到场景管理器中 // 内部使用,外部不要调用 void initRes(); private: CCLayer* m_pProgressLayer; CCSprite* m_pPicLoadBG; //进度条背景 CCSprite* m_pPicBg; //界面背景图 CCProgressTimer* m_pProTimeBar; //进度条 int m_nNumberOfSprites; int m_nNumberOfLoadedSprites; }; #endif //__LOADSCENE_H__
#include "LoadScene.h" #include "GameScene.h" #include "XSprite.h" #include "Config.h" #include "WidgetMgr.h" #include "SplashScene.h" #include "XImage.h" #include "XWidget.h" #include "GameMainScene.h" #include "GameConfig.h" #include "GameLogic.h" //#include "SplashLoading.h" #include "GameLevelScene.h" CLoadScene::CLoadScene() { m_pPicLoadBG = NULL; m_pPicBg = NULL; m_nNumberOfLoadedSprites = 0; m_nNumberOfSprites = 0; m_pProTimeBar = NULL; } CLoadScene::~CLoadScene(void) { CCLOG("CLoadScene::~CLoadScene"); } CCScene* CLoadScene::create() { CCScene* pScene = CCScene::create(); CLoadScene* pLoadScene = new CLoadScene(); if (pScene && pLoadScene) { pLoadScene->init(); pScene->addChild(pLoadScene,1); pLoadScene->autorelease(); } return pScene; } bool CLoadScene::init() { //读取配置 CConfig::getInstance()->loadImageInfo(); CConfig::getInstance()->loadElementInfo(); CConfig::getInstance()->loadWidgetInfo(); CConfig::getInstance()->loadAnimationInfo(); CConfig::getInstance()->loadSrollInfo(); CConfig::getInstance()->loadEffectInfo(); CConfig::getInstance()->loadAudioInfo(); CConfig::getInstance()->loadWordInfo(); CConfig::getInstance()->loadActionInfo(); CConfig::getInstance()->loadNumberInfo(); CGameConfig::getInstance()->loadMapInfo(); CGameConfig::getInstance()->loadBiontInfo(); CGameConfig::getInstance()->loadWeaponInfo(); CGameConfig::getInstance()->loadSectInfo(); CGameLogic::getInstance()->readSaveData(); //初始化元素 把plist形式的图片资源加载到内存 vector<PlistInfo>* vecPlist = CConfig::getInstance()->getElementInfoByItem(0); if (vecPlist) { for (vector<PlistInfo>::iterator it = vecPlist->begin(); it != vecPlist->end(); it++) { CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(it->strPlist.c_str(), it->strImage.c_str()); } } vector<PlistInfo>* vecPlist1 = CConfig::getInstance()->getElementInfoByItem(1); if (vecPlist1) { for (vector<PlistInfo>::iterator it = vecPlist1->begin(); it != vecPlist1->end(); it++) { CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(it->strPlist.c_str(), it->strImage.c_str()); } } ////进度条界面 //CXWidget* pPmgressDlg = new CXWidget; //CWidgetMgr::getInstance()->loadWidget(pPmgressDlg, _PmgressbarDialog); //pPmgressDlg->autorelease(); //this->addChild(pPmgressDlg); // //pPmgressDlg->getCtrl(_PmgressbarPic)->setVisible(false); ////进度条 //m_pProTimeBar = CCProgressTimer::create(((CXImage*)pPmgressDlg->getCtrl(_PmgressbarPic))->getPic()); //if (m_pProTimeBar) //{ // m_pProTimeBar->setPosition(pPmgressDlg->getCtrl(_PmgressbarPic)->getPosition()); // m_pProTimeBar->setType(kCCProgressTimerTypeBar); // m_pProTimeBar->setMidpoint(ccp(0,0)); // m_pProTimeBar->setBarChangeRate(ccp(0.5,0)); // m_pProTimeBar->ignoreAnchorPointForPosition(true); // //m_pProTimeBar->setAnchorPoint(ccp(0,0)); // this->addChild(m_pProTimeBar); // CCSize size = CCDirector::sharedDirector()->getWinSize(); // CCProgressTo* pProgressTo = CCProgressTo::create(2,100); // m_pProTimeBar->runAction(pProgressTo); //} this->loadRes(); return true; } //void CLoadScene::loadingCallBack( CCObject *obj ) //{ // ++m_nNumberOfLoadedSprites;//每调用一次就+1 // // //全部加载完成后,就执行 // if (m_nNumberOfLoadedSprites == m_nNumberOfSprites) // { // //切换场景 // //加载完 延时2秒 切换场景 // CCDelayTime* pActDelay = CCDelayTime::create(2.0f); // CCFiniteTimeAction* pAction = CCSequence::create(pActDelay, // CCCallFunc::create(this, callfunc_selector(CLoadScene::replaceMainlScene)), // NULL); // m_pProgressLayer->runAction(pAction); // } // //} void CLoadScene::loadRes() { //把Plist文件加载到内存 CCDelayTime *delayAction = CCDelayTime::create(0.1f); CCCallFunc *callSelectorAction = CCCallFunc::create(this,callfunc_selector(CLoadScene::replaceMainlScene)); this->runAction(CCSequence::create(delayAction, callSelectorAction, NULL)); } void CLoadScene::replaceMainlScene() { //CSplashLoading* pSplashLoading = CSplashLoading::create(CGameMainScene::create(CGameMainScene::_ResourceId)); //pSplashLoading->retainPrevResource(); CCDirector::sharedDirector()->replaceScene(CSplashScene::create(CGameMainScene::create(CGameMainScene::_ResourceId))); //CCDirector::sharedDirector()->replaceScene(CSplashScene::create(CGameLevelScene::create(CGameLevelScene::_ResourceId))); } void CLoadScene::initRes() { //这里初始化资源 }