cocos2d-x 4.0ラーニングロード(7)シーンの切り替え

シーン切り替え

前回の記事によると、独自のMyHelloWorldSceneを確立しました。それでは、HelloWorldSceneからMyHelloWorldSceneに切り替える方法を教えてください。

それは実際には非常に簡単です。シーンを切り替えたい場合は、トリガーポイントが必要です。HelloWorldの右下隅にある閉じるボタンを使用して、それを実現します。

ウィンドウを閉じるのではなく、閉じるボタンを押してMyHelloWorldSceneに切り替える必要があります。それでは、HelloWorldScene.cppのmenuCloseCallback()関数を見てみましょう。終了プロセスを削除して、文を追加するだけです。(注:MyHelloWorldScene.hヘッダーファイルを追加することを忘れないでください)

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

ご覧のとおり、MyHelloWorldのラベルのテキストと画像を変更して、見やすくしました。

特殊効果

このような直接的な変換は、少し土臭すぎて、変換効果を追加する方法です。Cocos2dxは私たちのために関数を準備しました。OKになるには、次のコードになる必要があります。

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

効果を見て、最初の大ヒットを感じますか?

TransitionSlideInTもシーンクラスで、Create関数を使用してスライド効果でこの種のシーンを作成します。

2つのパラメーターがあります。

float f:秒単位でのシーン切り替え時間

シーン*シーン:切り替えるターゲットシーン

Cocos2dxは、この特殊効果だけでなく、他の多くの効果も提供します。

例:TransitionJumpZoom:元のシーンがズームアウトし、新しいシーンがズームインします。

次に、TransitionFadeUpがあります。下から上へのブラインド効果です。

他に多くの例はありませんが、公式APIを確認できますこれらの遷移は、シーンの切り替えから始まります。

シーンの進歩とポップアップ

replaceSceneを使用してシーンを切り替えます。新しいシーンが表示された後、古いシーンのリソースが解放されます。シーンが非常に大きくなる場合があるため、これは非常に必要です。したがって、シーンを切り替えた後、古いシーンのリソースを解放する必要があります。

次に、古いシーンを解放したくないが、古いシーンと新しいシーンを交互に切り替えたい場合があります。これは、シーンを使用して進み、ポップアップします。

replaceSceneをpushSceneに変更します。

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

次に、MyHelloWorldSceneで次の変更を行います。

// 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();
}

popScene関数とpushScene関数は対応しています。popScene()関数を使用して元のシーンに戻ると、MyHelloWorldのシーンリソースが解放されます。

元の記事を104件公開 Like8 210,000以上にアクセス

おすすめ

転載: blog.csdn.net/sunnyboychina/article/details/105069922