This is my code I don\'t know how to create splash screen and how it will direct in my menu screen. All .h must be connected to BaseScreen and the BaseScreen will be the one
Here are three steps to add a splash screen scene on android. Using cocos2d-x 3.4. Hope this helps!
1 Create a SplashScene.cpp
#include "SplashScene.h"
#include "HomeScene.h"
using namespace cocos2d;
cocos2d::Scene* SplashScene::createScene()
{
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = SplashScene::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool SplashScene::init()
{
if ( !Layer::init() )
{
return false;
}
auto visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("splash.png");
// position the sprite on the center of the screen
sprite->setPosition(Vec2(visibleSize.width/2 , visibleSize.height/2 ));
// add the sprite as a child to this layer
this->addChild(sprite, 0);
return true;
}
void SplashScene::onEnter() {
Layer::onEnter();
// Wait for 0.5 seconds to load main scene
this->scheduleOnce(schedule_selector(SplashScene::finishSplash), 0.5f);
}
void SplashScene::finishSplash(float dt) {
// ... do whatever other initializations here
// Show the actual main scene
Director::getInstance()->replaceScene(HomeScene::createScene());
}
2 Create SplashScene.h
#ifndef __SplashScene__
#define __SplashScene__
#include
#include "cocos2d.h"
USING_NS_CC;
class SplashScene : public cocos2d::Layer
{
public:
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static Scene* createScene();
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
void onEnter();
void finishSplash(float dt);
// implement the "static create()" method manually
CREATE_FUNC(SplashScene);
};
#endif /* defined(__stickerPuzzle__SplashScene__) */
3 Modify AppDelegate.cpp
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("My Game");
director->setOpenGLView(glview);
}
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
// ... other stuff ...
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
// On Android - start the splash scene first
auto scene = SplashScene::createScene();
director->runWithScene(scene);
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
// On iOS, no need to add splash scene, start main scene directly
auto scene = HomeScene::createScene();
director->runWithScene(scene);
#endif
return true;
}