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,而并未子类化场景类。这主要是由于场景的生命周期是通过层的生命周期反应出来的。理解了这点就理解了层与场景之间的关系。

  • 相关阅读:
    安卓系统浏览器中select下拉按钮无法弹出选择面板奇怪问题解决
    Webkit浏览器点击控件时出现的边框消除
    UML序列图总结
    UML序列图总结
    UML类图几种关系的总结
    UML类图几种关系的总结
    UML用例图总结
    UML用例图总结
    类与类之间的关系
    java核心技术----Object类
  • 原文地址:https://www.cnblogs.com/AmitX-moten/p/4209764.html
Copyright © 2011-2022 走看看