1. 程式人生 > >cocos2d-x學習筆記【一】建立自己的場景類

cocos2d-x學習筆記【一】建立自己的場景類

本帖首發於自己新建的論壇網站:計算機專業學習網,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場景

這是我們建立的場景,只不過沒有新增任何東西。