cocos2d-x

时间:2015-07-23 02:52:39

标签: c++ cocos2d-iphone cocos2d-x

我有自己的ClientGame类,我想添加这个类的对象,cocos2d-x中的所有Scenes都可以访问它。我尝试了以下方法,但它们不起作用。

1)我创建了一个包含我的类对象的BaseScene类,并继承了cocos2d :: Layer。然后,每个场景都继承此BaseScene。它会编译,但窗口屏幕会立即显示并立即关闭。

2)我试图在同一时间继承cocos2d::LayerBaseScene。 它编译,但它产生与上面相同的结果。

创建一个可供所有Scenes访问的对象的最佳方法是什么? 这是我的代码。

  

BaseScene.h

#include "cocos2d.h"
#include "ClientGame.h"


class BaseScene
{
public:

private: 
  ClientGame mClientGame;

};
  

ClientGame.h

class ClientGame
{
public:
    ClientGame(void);
    ~ClientGame(void);    
    ClientNetwork* network; 
    void sendActionPackets(int action);
    void sendLineDestroyed();
    char network_data[MAX_PACKET_SIZE];
    void update();
    void clientLoop();

};
  

IntroScene.h

#include "cocos2d.h"
#include "BaseScene.h"


class IntroScene : public cocos2d::Layer, public BaseScene
{
public:
    // there's no 'id' in cpp, so we recommend returning the class instance pointer
    static cocos2d::Scene* createScene();

    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();

    // a selector callback
    void menuCloseCallback(cocos2d::Ref* pSender);

    // implement the "static create()" method manually
    CREATE_FUNC(IntroScene);

    cocos2d::Sprite* pTetrisLogo;
    cocos2d::Sprite* pCloseNormal;

    void SinglePlay(Ref* pSender);
    void MultiPlay(Ref* pSender);
    void Exit(Ref* pSender);

//  void ImageButton(Ref* pSender);

};

1 个答案:

答案 0 :(得分:1)

在此发帖,因为我还没有足够的评论声誉。

您是否希望继承它?如果它需要被代码中所有类的对象访问,那么你是不是只需要它Singleton