Cocos2d-x3.2 Loading 장면의 디자인
//GameScene.h
#include "cocos2d.h"
USING_NS_CC;
class GameScene : public cocos2d::Layer
{
public:
static Scene* createScene();
virtual bool init();
void menuCallback(Ref* pSender);
void loadingCallBack(Ref* pSender);
void turnToHelloScene();
private:
Size size;
Label *labelLoading; //Loading
Label *labelPercent; //
int numberOfSprites; //
int numberOfLoadSprites; //
ProgressTimer *loadProgress; //
CREATE_FUNC(GameScene);
};
//GameScene.cpp
#include "GameScene.h"
#include "HelloWorldScene.h"
USING_NS_CC;
cocos2d::Scene* GameScene::createScene()
{
auto scene = Scene::create(); //
auto layer = GameScene::create(); //
scene->addChild(layer);
return scene;
}
//
bool GameScene::init()
{
if(!Layer::init()) //
return false;
//
size = Director::getInstance()->getVisibleSize();
//size = Director::getInstance()->getWinSize();
labelLoading = Label::createWithSystemFont("Loading...", "Marker Felt", 50);
labelLoading->setPosition(Vec2(size.width/2, size.height/2));
this->addChild(labelLoading);
labelPercent = Label::createWithSystemFont("%0", "Marker Felt", 50);
labelPercent->setPosition(Vec2(size.width/2, size.height*0.3));
this->addChild(labelPercent);
numberOfSprites = 200;
numberOfLoadSprites = 0;
//
loadProgress = ProgressTimer::create(Sprite::create("sliderProgress.png"));
loadProgress->setBarChangeRate(Vec2(1, 0)); //
loadProgress->setType(ProgressTimer::Type::BAR);
loadProgress->setMidpoint(Vec2(0, 0));
loadProgress->setPosition(Vec2(size.width/2, size.height*0.2));
loadProgress->setPercentage(0.0f);
this->addChild(loadProgress, 1);
// , , , , 200
for (int i=0; i<100; i++)
{
Director::getInstance()->getTextureCache()->addImageAsync("OnePiece_1.png", CC_CALLBACK_1(GameScene::loadingCallBack, this));
Director::getInstance()->getTextureCache()->addImageAsync("Flag_1.png", CC_CALLBACK_1(GameScene::loadingCallBack, this));
}
return true;
}
void GameScene::loadingCallBack(Ref* pSender)
{
numberOfLoadSprites++;
char tmp[10];
float value = ((float)numberOfLoadSprites / numberOfSprites)*100; //
sprintf(tmp, "%d%%", (int)(value));
labelPercent->setString(tmp);
loadProgress->setPercentage(value);
// ,
if (numberOfLoadSprites == numberOfSprites) {
turnToHelloScene();
}
}
void GameScene::turnToHelloScene()
{
// HelloWorld
Director::getInstance()->replaceScene(HelloWorld::createScene());
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.