cocos2d-x 4.0 aprendizagem (sete) comutação de cena

Mudança de cena

De acordo com o artigo anterior, estabelecemos nosso próprio MyHelloWorldScene. Então, como mudar do HelloWorldScene para MyHelloWorldScene?

Na verdade, é muito simples. Queremos trocar de cena, então deve haver um ponto de disparo, usamos o botão Fechar no canto inferior direito do HelloWorld para alcançá-lo.

O que precisamos fazer é pressionar o botão Fechar em vez de fechar a janela, mas mudar para MyHelloWorldScene. Então, vamos dar uma olhada na função menuCloseCallback () do HelloWorldScene.cpp. Basta remover o processo de fechamento e adicionar uma frase. (Observação: não se esqueça de adicionar o arquivo de cabeçalho MyHelloWorldScene.h)

void HelloWorld::menuCloseCallback(Ref* sender)
{
    //Director::getInstance()->end();
    Director::getInstance()->replaceScene(MyHelloWorld::createScene());
}

Como você pode ver, alterei o texto e as imagens do Label no MyHelloWorld para que fiquem mais claros.

Efeitos especiais

Essa transformação direta é um pouco terrena, como adicionar alguns efeitos de transformação. O Cocos2dx preparou a função para nós, basta tornar o código a seguir para estar OK.

void HelloWorld::menuCloseCallback(Ref* sender)
{
    //Director::getInstance()->end();
    Director::getInstance()->replaceScene(TransitionSlideInT::create(2.0f, MyHelloWorld::createScene()));
}

Olhando para o efeito, você sente o sucesso de público inicial?

TransitionSlideInT também é uma classe de cena, que cria esse tipo de cena com um efeito deslizante através da função Criar.

Tem dois parâmetros,

float f: tempo para troca de cena, em segundos

Cena * cena: a cena alvo que você deseja alternar

O Cocos2dx não apenas fornece esse efeito especial, mas também muitos outros,

Por exemplo: TransitionJumpZoom: a cena original diminui o zoom e a nova cena aumenta o zoom.

Depois, há TransitionFadeUp: o efeito cego de baixo para cima:

Não há muitos outros exemplos, você pode verificar a API oficial . Essas transições começam com a troca de cenas.

Avanço e pop-up de cena

Use replaceScene para alternar cenas.Depois que a nova cena for exibida, os recursos da cena antiga serão liberados. Isso é muito necessário, pois uma cena às vezes pode ser muito grande; portanto, os recursos da cena antiga devem ser liberados após a troca de cena.

Às vezes, não queremos que a cena antiga seja lançada, mas queremos alternar entre a antiga e a nova. Isso usa a cena para avançar e aparecer.

Altere replaceScene para pushScene:

// HelloWorldScene.cpp
void HelloWorld::menuCloseCallback(Ref* sender)
{
    //Director::getInstance()->end();
    Director::getInstance()->pushScene(TransitionSplitCols::create(2.0f, MyHelloWorld::createScene()));
}

Em MyHelloWorldScene, faça as seguintes alterações:

// MyHelloWorldScene.h
void backToScene(Ref* sender);

// MyHelloWorldScene.cpp
    auto closeItem = MenuItemImage::create(
        "CloseNormal.png",
        "CloseSelected.png",
        CC_CALLBACK_1(MyHelloWorld::backToScene, this));

void MyHelloWorld::backToScene(Ref* sender)
{
    Director::getInstance()->popScene();
}

As funções popScene e pushScene são correspondentes. Use a função popScene () para retornar à cena original, e os recursos de cena do MyHelloWorld serão liberados.

Publicado 104 artigos originais · Gosto8 · Visite mais de 210.000

Acho que você gosta

Origin blog.csdn.net/sunnyboychina/article/details/105069922
Recomendado
Clasificación