gpt4 book ai didi

c++ - 如何在cocos2d-x中获取同一场景中的其他图层?

转载 作者:行者123 更新时间:2023-11-28 00:31:37 26 4
gpt4 key购买 nike

我在场景中有几个层,比如 TLayer、HLayer、TouchLayer。 HLayer中如何获取HLayer?我采取的解决方案是我将Layer传递给其他Layer。但是我最近遇到了一些问题。当 TouchLayer 仍然存在时,我按下场景并弹出场景。所以我的问题是将 HLayer 传递给 TouchLayer 是否正确。或者在 Cocos2d-x 中有更好的方法吗?

在场景中的init()函数中:

this->setbackgroundLayer(BackgroundLayer::create());
CC_BREAK_IF(!backgroundLayer);
this->addChild(backgroundLayer);

this->setTLayer(TcharacterLayer::create(backgroundLayer->tianzige));
CC_BREAK_IF(!TLayer);
this->addChild(TLayer);

this->setHLayer(HcharacterLayer::create(testCharacter,backgroundLayer->tianzige_draw));
CC_BREAK_IF(!HLayer);
this->addChild(HLayer);

this->settouchLayer(TouchLayer::create(TLayer,HLayer));
CC_BREAK_IF(!touchLayer);
this->addChild(touchLayer);

我做了自己的创建函数:

TouchLayer* TouchLayer::create(TcharacterLayer* t,HcharacterLayer* h){
TouchLayer* pRet = new TouchLayer();
if (pRet && pRet->init(t,h))
{
pRet->autorelease();
return pRet;
}else
{
delete pRet;
pRet = NULL;
return NULL;
}
}

最佳答案

以下是我们过去的做法。为我们的图层定义一组标签。

typedef enum {
kBgLayerTag,
kHLayerTag,
kTLayerTag,
kTouchLayerTag
} MyLayerTags

然后在创建层时设置层特定标签:

this->setTLayer(TcharacterLayer::create(backgroundLayer->tianzige));
CC_BREAK_IF(!TLayer);
TLayer->setTag(kTLayerTag);
this->addChild(TLayer);

然后在 TouchLayer 中访问 TLayer 和其他类似的:

TcharacterLayer* myTLayer = this->getParent()->getChildByTag(kTLayerTag);

关于c++ - 如何在cocos2d-x中获取同一场景中的其他图层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22708892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com