I created 3 scene level, Splash Scene -> Product Scene -> Main Menu Scene, but when entering new scene there’s little annoying blink animation
Splash Scene
#include "SplashScreen.hpp"
#include "ProductScene.hpp"
#include "MainMenu.hpp"
#include "SimpleAudioEngine.h"
USING_NS_CC;
using namespace cocos2d;
using namespace CocosDenshion;
Scene* SplashScreen::createScene() {
auto scene = Scene::create();
auto layer = SplashScreen::create();
scene->addChild(layer);
return scene;
}
bool SplashScreen::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//SimpleAudioEngine::getInstance()->playBackgroundMusic("bgMain.mp3", true);
this->schedule(schedule_selector(SplashScreen::goToProductScene), 2);
auto backgroundSprite = Sprite::create("raionlogo.png");
backgroundSprite->setPosition(Vec2(visibleSize.width / 2, visibleSize.height/2));
this->addChild(backgroundSprite);
return true;
}
void SplashScreen::goToProductScene(float dt) {
auto scene = ProductScene::createScene();
Director::getInstance()->pushScene(TransitionFade::create(2, scene));
}
Product Scene
#include "ProductScene.hpp"
#include "MainMenu.hpp"
#include "SimpleAudioEngine.h"
#include "SplashScreen.hpp"
USING_NS_CC;
using namespace cocos2d;
using namespace CocosDenshion;
Scene* ProductScene::createScene() {
auto scene = Scene::create();
auto layer = ProductScene::create();
scene->addChild(layer);
return scene;
}
bool ProductScene::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
this->schedule(schedule_selector(ProductScene::goToMainMenuScene), 2);
auto backgroundSprite = Sprite::create("product.png");
backgroundSprite->setPosition(Vec2(visibleSize.width / 2, visibleSize.height/2));
this->addChild(backgroundSprite);
return true;
}
void ProductScene::goToMainMenuScene(float dt) {
auto scene = MainMenu::createScene();
Director::getInstance()->pushScene(TransitionFade::create(2, scene));
}
Main Menu Scene
#include "ProductScene.hpp"
#include "SplashScreen.hpp"
#include "MainMenu.hpp"
#include "GameLayer.h"
#include "ui/CocosGUI.h"
using namespace cocos2d;
Scene* MainMenu::createScene() {
auto scene = Scene::create();
auto layer = MainMenu::create();
scene->addChild(layer);
return scene;
}
bool MainMenu::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto mainMenuBg = Sprite::create("bgmainmenu.png");
mainMenuBg->setPosition(Vec2(visibleSize.width * 0.5, visibleSize.height * 0.5));
this->addChild(mainMenuBg);
auto title = Sprite::create("logo.png");
title->setPosition(Vec2(visibleSize.width * 0.5, visibleSize.height * 0.8));
this->addChild(title);
auto playItem = MenuItemImage::create("PLAY.png", "play clicked.png", CC_CALLBACK_1(MainMenu::goToGameScene, this));
playItem->setPosition(Vec2(visibleSize.width * 0.5, visibleSize.height * 0.6));
auto optionItem = MenuItemImage::create("OPTION.png", "play clicked.png", CC_CALLBACK_1(MainMenu::goToGameScene, this));
optionItem->setPosition(Vec2(visibleSize.width * 0.5, visibleSize.height * 0.45));
auto scoreItem = MenuItemImage::create("SCORE.png", "play clicked.png", CC_CALLBACK_1(MainMenu::goToGameScene, this));
scoreItem->setPosition(Vec2(visibleSize.width * 0.5, visibleSize.height * 0.30));
auto exitItem = MenuItemImage::create("EXIT.png", "play clicked.png", CC_CALLBACK_1(MainMenu::goToGameScene, this));
exitItem->setPosition(Vec2(visibleSize.width * 0.5, visibleSize.height * 0.15));
auto menu = Menu::create(playItem,optionItem,scoreItem,exitItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu);
return true;
}
void MainMenu::goToGameScene(cocos2d::Ref *pSender) {
auto scene = GameLayer::scene();
Director::getInstance()->replaceScene(TransitionFade::create(2, scene));
}
anyone can help me ?
i appreciate it