【cocos2d-x游戏开发】场景,层,精灵的区别

Scene (场景):

场景是cocos2d中的一个重要概念,可以理解为一个舞台,我们可以向这个舞台添加元素(层,精灵和控件),让这个舞台变得生动起来。场景用Scene表示它继承了Node类,下面的代码是用来创建一个场景

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();           //创建一个场景类
    
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();       //创建一个HelloWorld对象,找个对象是一个层,

    // add layer as a child to scene
    scene->addChild(layer);                   //将layer对象添加到scene对象中

    // return the scene
    return scene;                    //最后返回一个scene场景对象
}

已经创建好了一个场景下面就要把这个场景添加到我们的窗口中去
bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("My Game");              //设置窗口的名字
		glview->setFrameSize(1024,768);                  //设置窗口的大小
        director->setOpenGLView(glview);
    }

    // turn on display FPS
    director->setDisplayStats(true);                           //设置是否显示游戏的帧率等调试信息

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);                //设置帧率,这里是每秒60帧

    // create a scene. it's an autorelease object
    auto scene = HelloWorld::createScene();                 ///用来说明创建的场景是有哪个头文件创建的(设置默认的启动场景)

    // run
    director->runWithScene(scene);                    //将初始场景加载到环境中,次函数只能在家在第一个场景是使用

    return true;
}
说道这里我们有必要说一个Director这个类,这是一个导演类,它的功能很强大,比如说场景的切换,游戏的暂停与继续,世界坐标和GL坐标之间的切换,对于精灵的控制,还有一些数据的保存,屏幕尺寸的获取等等都需要用到这个强大的“导演”。

在创建场景的过程中用到了create函数来创建,创建的过程中调用了init函数,这是由系统自动调用的,用的正是一个宏函数,如下

#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
    __TYPE__ *pRet = new __TYPE__(); \
    if (pRet && pRet->init()) \
    { \
        pRet->autorelease(); \
        return pRet; \
    } \
    else \
    { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
    } \
}
这是系统创建的一个宏函数,参数是_TYPE_。比如说你传进来的是HelloWorld,那么代码中所有_TYPE_的地方都要换成HelloWorld,采用这样的方法来完成初始化工作。

Layer (层):

下面说一些关于层的一些概念。顾名思义,层就是依附于场景之上的图层,它可以响应用户的操作事件,另外在一个场景中,层与层还是有区别的有些层会覆盖在其它层上方,这是由用户自己设定的。创建一个层很简单

Layer* layer = Layer::create();
一个层必须添加到场景中才能发挥作用,也就是说,层无法抛开场景而独立存在。

Sprite(精灵) :

精灵可以理解为游戏中的对象,创建方法如下:

Sprite* sprite = Sprite::create("CloseNormal.png");

创建精灵的方法不止一种,最简单的是用一张图片来创建一个精灵。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...