如何制作可以包含在 HelloWorld.cpp in cocos2d-x 中的 Layer 文件...?

how to make a Layer file that can be included in HelloWorld.cpp in cocos2d-x ...?

我想在 HelloWorldScene.cpp 中安排许多图层,方法是将每个图层制作成 cpp 文件。但是我不知道如何开始编写头文件以及如何将它们包含在 HelloWorld.cpp 中,尽管我在 Google & StakOverflow 上搜索了几天。为了解释我想做什么,我做了一个下面的简单示例。我这里只加了2层,但是1个场景会有20多个层,所以我想把它们都做成一个文件。

HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"
class HelloWorld : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();

    virtual bool init();

    CREATE_FUNC(HelloWorld);

    cocos2d::Layer* layer01;
    cocos2d::Layer* layer02;

    int GrossiniPops;
    cocos2d::Sprite* pMan;

    virtual void getTouched01();
    virtual void closingLayer();

};
#endif // __HELLOWORLD_SCENE_H__

HelloWorldScene.cpp

#include "HelloWorldScene.h"
#include "ui/CocosGUI.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    auto scene = Scene::create();
    auto layer = HelloWorld::create();
    scene->addChild(layer);
    return scene;
}


bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }

    layer01 = Layer::create();
    this->addChild(layer01);

    layer02 = LayerColor::create(Color4B::WHITE);
    this->addChild(layer02);
    layer02->setVisible(false);

    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    auto btn01 = cocos2d::ui::Button::create();
    btn01->loadTextures("images/moveBar.png","","");
    btn01->addTouchEventListener(CC_CALLBACK_0(HelloWorld::getTouched01, this));
    btn01->setPosition(Point(275,250));
    layer01->addChild(btn01);

    auto btn02 = cocos2d::ui::Button::create();
    btn02->loadTextures("images/moveBar.png", "", "");
    btn02->addClickEventListener(CC_CALLBACK_0(HelloWorld::closingLayer, this));
    btn02->setPosition(Point(375, 250));
    this->addChild(btn02, 3);

    GrossiniPops = 0;
    pMan = Sprite::create("images/grossini.png");
    pMan->setPosition(Point(325, 150));
    layer01->addChild(pMan);
    pMan->setVisible(false);

    return true;
}


void HelloWorld::getTouched01()
{
    GrossiniPops++;
    if (GrossiniPops%4==2) {
        pMan->setVisible(true);
    }
    else { pMan->setVisible(false); }
}


void HelloWorld::closingLayer()
{
    log("Layer Change");

    if (layer01->isVisible()==true)
    {
        layer01->setVisible(false);
        layer02->setVisible(true);
    }
    else {
        layer02->setVisible(false);
        layer01->setVisible(true);
    }
}

如果您想使用 "HelloWorld.h" 文件,您需要将其包含在 "HelloWorld.cpp" 文件中。将此行放在 "HelloWorld.cpp" 文件的顶部:

#include "HelloWorld.h"

应该可以解决。

如果您想阅读更多有关 C++ 中的包含文件和源文件的信息,这里有一个很好的参考:

http://www.cplusplus.com/forum/articles/10627/