cocos2d-x学习笔记【一】创建自己的场景类

来源:互联网 发布:northwind数据库下载 编辑:程序博客网 时间:2024/04/30 12:46

本帖首发于自己新建的论坛网站:计算机专业学习网,www.hua2buxie.cn。有很多不懂,写的也不好,望大家见谅!欢迎大家去我的网站发帖留言或者发教程。

背景:
前段时间才开始学习cocos2d-x,搭建环境那些就不说了,朋友们在网上找下,我用的环境是cocox2d-x 3.x的。
创建自己的场景
新建场景,首先就得包括2个文件,其中一个.cpp还有一个.h头文件。我将名字命名为CMyScene类,对应的文件为MyScene.h和MyScene.cpp。在新建的CMyScene类中最基本包含了3个成员函数,分别是createScene();和bool init();和CREATE_FUNC(CMyScene);其中重点说的是CREATE_FUNC(CMyScene);这是一个宏。定义自己场景类的时候必须要这个。现在将完成后的.h代码贴出来:

#ifndef __MYSCENE_H__//判断是否重复包含头文件#define __MYSCENE_H__#include "cocos2d.h"//需要包含cocos2d-x头文件class CMyScene:public cocos2d::Layer//场景类派生于Layer层类{public:        static cocos2d::Scene*createScene();        virtual bool init();        CMyScene();//空构造函数        ~CMyScene();//空析构函数      CREATE_FUNC(CMyScene);//这个很重要,这个是宏定义的,每个必须有、};#endif

然后需要在.cpp文件中实现:

#include "MyScene.h"USING_NS_CC;Scene* CMyScene::createScene(){        auto scene = Scene::create();        auto layer = CMyScene::create();        scene->addChild(layer);        return scene;}bool CMyScene::init(){        if (!Layer::init())        {                return false;        }}CMyScene::CMyScene(){}CMyScene::~CMyScene(){}


上面这个CMyScene类就是自己定义的场景类。但是在启动的时候还不行,假如我们想在启动的时候转到这个场景类得在AppDelegate.cpp中的applicationDidFinishLaunching()函数中加这样一句:auto scene = CMyScene::createScene();

    director->runWithScene(scene);    // run这个就是利用导演类进行启动我们所需要的场景。假设是切换场景的时候就是用replacescene();
如果我但是这个场景所产生的就是一个黑框框场景。因为我们还没有添加任何东西。下次教大家如何往场景里面添加精灵等等。
这是附的图,这是最初的helloworld场景

这是我们创建的场景,只不过没有添加任何东西。

0 0
原创粉丝点击