cocos2d-x學習筆記【一】建立自己的場景類
阿新 • • 發佈:2019-02-17
本帖首發於自己新建的論壇網站:計算機專業學習網,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場景
這是我們建立的場景,只不過沒有新增任何東西。