zoukankan      html  css  js  c++  java
  • Cocos2d-x学习笔记(九)场景切换

    这里只介绍两个简单的两个场景相互切换的方法。

    void pushScene(Scene *sn)和void popScene(Scene *sn)是一对。前者将当前场景放入到场景堆栈中,并切换到下一个场景;而后者则是回到堆栈顶的场景(一般是上一个场景)。另外,这里的堆栈的原型是Vector<Scene*>。通常,他们都是通过事件回调来触发的。

    下边的代码是将当前场景压入堆栈,并自动切换到下一个场景(其实,实质是在回到函数里创建了一个新场景^_^):

    MenuItemImage *settingMenuItem = MenuItemImage::create("menu/setting-up.png", "menu/setting-down.png", CC_CALLBACK_1(HelloWorld::menuItemSettingCallback, this));
    void HelloWorld::menuItemSettingCallback(Ref *pSender)
    {
        auto sc = Setting::createScene();
        Director::getInstance()->pushScene(sc);
    }

    下边的代码是将栈顶场景出站,并恢复栈顶场景:

    auto okMenuItem = MenuItemImage::create("menu2/ok-down.png", "menu2/ok-up.png", CC_CALLBACK_1(Setting::menuOkCallback, this));
    void Setting::menuOkCallback(Ref *pSender)
    {
        Director::getInstance()->popScene();
    }

    运行结果:

    图1 HelloWorld场景

    图2 Setting场景

    点击红色箭头所示的button,就会就行两个场景之间来回的切换。

    回顾代码,我们会发现,一直以来,我们只是在子类化Layer,而并未子类化场景类。这主要是由于场景的生命周期是通过层的生命周期反应出来的。理解了这点就理解了层与场景之间的关系。

  • 相关阅读:
    【强转】QEMU+GDB调试linux内核全过程
    从上往下打印二叉树
    栈的压入、弹出序列
    包含main函数的栈
    顺时针打印矩阵
    Linux终端美化
    Linux 终端美化
    KDE桌面环境自带的Konsole终端配置
    KDE美化及常用设置
    KDE常用桌面插件总结
  • 原文地址:https://www.cnblogs.com/AmitX-moten/p/4209764.html
Copyright © 2011-2022 走看看