首先将splash,像素480 * 800大图如下图:
切成四个小图(480 * 200)命名:SplashSlice_01.png,SplashSlice_02.png,SplashSlice_03.png,SplashSlice_04.png
然后再代码实现如下:
// SplashScene.cpp
// DontSaveMeGame
//
// Created by Mr Gan on 1/2/15.
//
#include"SplashScene.h"
#include "StartScene.h"
#include "../VisibleRect.h"
SplashScene::SplashScene()
{
}
SplashScene::~SplashScene()
{
_vcSprites.clear();
}
bool SplashScene::init()
{
if (!Scene::init())
{
return false;
}
for (int i = 0; i < 4; ++i)
{
auto fileName = String::createWithFormat("SplashSlice_0%d.png",i + 1);
auto sp = Sprite::create(fileName->getCString());
sp->setAnchorPoint(Vec2(0.5f,1.0f));
sp->setPosition(VisibleRect::top().x,VisibleRect::top().y - i * 200);
this->addChild(sp);
_vcSprites.pushBack(sp);
}
auto move1 = MoveBy::create(0.5,Vec2(0,-200));
auto move2 = MoveBy::create(0.5,200));
auto fun = cocos2d::CallFunc::create(CC_CALLBACK_0(SplashScene::afterFirst,this));
auto seq = Sequence::create(move1,fun, NULL);
_vcSprites.at(0)->runAction(seq);
_vcSprites.at(1)->runAction(move2);
return true;
}
void SplashScene::update(float dt)
{
auto scene = StartScene::create();
Director::getInstance()->replaceScene(scene);
}
void SplashScene::afterFirst()
{
auto move1 = MoveBy::create(0.5,200));
auto fun = cocos2d::CallFunc::create(CC_CALLBACK_0(SplashScene::afterSecond, NULL);
_vcSprites.at(0)->runAction(seq);
_vcSprites.at(2)->runAction(move2);
}
void SplashScene::afterSecond()
{
auto move1 = MoveBy::create(0.5,200));
auto delay = DelayTime::create(0);
auto fun = cocos2d::CallFunc::create(CC_CALLBACK_0(SplashScene::beginGame,this));
auto seq = Sequence::create(move1,delay,NULL);
_vcSprites.at(0)->runAction(seq);
_vcSprites.at(3)->runAction(move2);
}
void SplashScene::beginGame()
{
auto scene = StartScene::create();
auto tranScene = TransitionZoomFlipX::create(2.0f,scene,TransitionScene::Orientation::LEFT_OVER);
@H_241_404@ Director::getInstance()->replaceScene(tranScene);
}