cocos2d-x 中所有场景均可访问的对象
An object which is accessible by all Scenes in cocos2d-x
我有自己的 ClientGame
class,我想添加这个 class 的对象,[=33= 中的所有 Scenes
都可以访问它].我尝试了以下方法,但它们不起作用。
1) 我创建了一个 BaseScene
class,其中包含我的 class 对象并继承了 cocos2d::Layer。然后,每个场景都继承这个BaseScene
。它可以编译,但是 window 屏幕只是出现并立即关闭。
2) 我试图同时继承cocos2d::Layer
和BaseScene
。
它编译,但产生与上面相同的结果。
创建所有人都可以访问的对象的最佳方法是什么 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);
};
因为我还没有足够的声誉来发表评论,所以在这里发帖。
您希望它被继承有什么具体原因吗?如果您的代码中所有 类 的对象都需要访问它,您不能只将它设为 Singleton 吗?
我有自己的 ClientGame
class,我想添加这个 class 的对象,[=33= 中的所有 Scenes
都可以访问它].我尝试了以下方法,但它们不起作用。
1) 我创建了一个 BaseScene
class,其中包含我的 class 对象并继承了 cocos2d::Layer。然后,每个场景都继承这个BaseScene
。它可以编译,但是 window 屏幕只是出现并立即关闭。
2) 我试图同时继承cocos2d::Layer
和BaseScene
。
它编译,但产生与上面相同的结果。
创建所有人都可以访问的对象的最佳方法是什么 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);
};
因为我还没有足够的声誉来发表评论,所以在这里发帖。
您希望它被继承有什么具体原因吗?如果您的代码中所有 类 的对象都需要访问它,您不能只将它设为 Singleton 吗?