私は非常に単純だと思うことに問題がありますが、それを理解することはできません。
WavePrototypeScene という名前のシーンがあります
WavePrototypeScene.h
#ifndef __WAVE_PROTOTYPE_SCENE_H__
#define __WAVE_PROTOTYPE_SCENE_H__
#include "cocos2d.h"
#include "WavePrototypeGameLayer.h"
#include "WavePrototypeInterfaceLayer.h"
using namespace cocos2d;
class WavePrototypeScene : public CCScene
{
public:
virtual bool init();
static cocos2d::CCScene* scene();
CREATE_FUNC(WavePrototypeScene);
};
#endif
WavePrototypeScene.cpp
#include "WavePrototypeScene.h"
CCScene* WavePrototypeScene::scene()
{
CCScene * scene = NULL;
do
{
scene = CCScene::create();
CC_BREAK_IF(! scene);
// add game layer
WavePrototypeGameLayer *layer1 = WavePrototypeGameLayer::create();
CC_BREAK_IF(! layer1);
scene->addChild(layer1, 1, 1);
// add interface layer
WavePrototypeInterfaceLayer *layer2 = WavePrototypeInterfaceLayer::create();
CC_BREAK_IF(! layer2);
scene->addChild(layer2, 2, 2);
} while (0);
return scene;
}
次に、WavePrototypeGameLayer と WavePrototypeInterfaceLayer の 2 つのレイヤーがあります。
WavePrototypeGameLayer.h
#ifndef __WAVE_PROTOTYPE_GAME_LAYER_H__
#define __WAVE_PROTOTYPE_GAME_LAYER_H__
#include "cocos2d.h"
#include "WavePrototypeInterfaceLayer.h"
using namespace cocos2d;
class WavePrototypeGameLayer : public CCLayer
{
public:
virtual bool init();
static CCScene* scene();
CREATE_FUNC(WavePrototypeGameLayer);
};
#endif
WavePrototypeGameLayer.cpp
#include "WavePrototypeGameLayer.h"
bool WavePrototypeGameLayer::init()
{
bool bRet = false;
do
{
int health = 10;
bRet = true;
} while (0);
return bRet;
}
WavePrototypeInterfaceLayer.h
#ifndef __WAVE_PROTOTYPE_INTERFACE_LAYER_H__
#define __WAVE_PROTOTYPE_INTERFACE_LAYER_H__
#include "cocos2d.h"
#include "WavePrototypeGameLayer.h"
using namespace cocos2d;
class WavePrototypeInterfaceLayer : public CCLayer
{
public:
virtual bool init();
static CCScene* scene();
CREATE_FUNC(WavePrototypeInterfaceLayer);
void menuAction(CCObject* pSender);
};
#endif
WavePrototypeInterfaceLayer.cpp
#include "WavePrototypeInterfaceLayer.h"
bool WavePrototypeInterfaceLayer::init()
{
bool bRet = false;
do
{
CCMenuItemImage *actonButtonItem = CCMenuItemImage::create("actionbutton.png", "actionbuttonpressed.png", this, menu_selector(WavePrototypeInterfaceLayer::menuAction));
actonButtonItem->setPosition(ccp(55, 55));
CCMenu* actionButtonMenu = CCMenu::create(actonButtonItem, NULL);
actionButtonMenu->setPosition(CCPointZero);
this->addChild(actionButtonMenu, 10);
char text[256];
sprintf(text, "Health: 0");
healthLabel = CCLabelTTF::create(text, "Arial", 24);
healthLabel->setPosition(ccp(100, 100));
this->addChild(healthLabel, 10);
bRet = true;
} while (0);
return bRet;
}
void WavePrototypeInterfaceLayer::menuAction(CCObject* pSender)
{
//button hit
}
私のコードにはこれ以上のものがあります。簡単にするために他のすべてを切り取っただけです。
基本的に私が望むのは、インターフェイス レイヤーのボタンを押すと、タグ 1 の gamelayer インスタンスから int 値を取得し、それをインターフェイス レイヤーのラベルにロードすることです。
これを機能させるために多くのことを試みましたが、正しく機能するようには見えません。
Objective-C の cocos2d では、WavePrototypegameLayer* interface = (WavePrototypegameLayer*)[self.parent getChildByTag:1]; を実行することでこれを行うことができます。
cocos2d-x に相当するものはありますか