第七章场景与层

本文详细介绍了Cocos2d-x中场景(Scene)与层(Layer)的关系,包括场景切换的函数、场景过渡动画的使用以及场景的生命周期。在场景切换时,可以使用如、等函数,同时提供了多种过渡动画效果。场景的生命周期通过层的生命周期函数(如、等)来管理,多场景切换时有不同的生命周期表现。
摘要由CSDN通过智能技术生成

Cococs2d-x学习笔记


场景与层的关系

一个场景(Scene)有n个层(Layer)对应,并且层的个数至少为1。

场景切换

场景切换相关函数

  • void runWithScene(Scene * scene):该函数可以运行场景,只能在启动第一个创景时调用该函数,如果已经有一个场景运行情况下则不能调用该函数。
  • void replaceScene(Scene * scene):切换到下一个场景,用一个新的场景替换当前场景,当前场景被终端释放。
  • void pushScene(Scene * scene):切换到下一个场景,将当前场景挂起放入场景堆栈中,然后再切换到下一个场景中。
  • void popScene():与pushScene配合使用,可以回到上一个场景。
  • void popToRootScene():与pushScene配合使用,可以回到根场景。

注意:replaceScene会释放和销毁场景,pushScene并不会释放和销毁场景,原来场景的状态可以保持。
使用replaceScene代码如下:

auto sc = Setting::createScene();
Director::getInstance()->replaceScene(sc);

使用pushScene代码如下:

auto sc = Setting::createScene();
DIrector::getInstance()->pushScene(sc);

实例

首先需要在VS2015中添加一个Setting场景(即创建一个头文件和CPP文件),根据我的尝试,应该是放在classes文件夹下。

HelloWorld.h文件

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"
#include "SettingScene.h"

class HelloWorld : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();

    virtual bool init();

    // a selector callback
    void menuItemStartCallback(Ref * pSender);
    void menuItemSettingCallback(Ref * pSender);
    void menuItemHelpCallback(Ref * pSender);

    // implement the "static create()" method manually
    CREATE_FUNC(HelloWorld);
};

#endif // __HELLOWORLD_SCENE_H__

HelloWorld.cpp文件

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();

    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值