シーン切り替え
前回の記事によると、独自の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のシーンリソースが解放されます。