我正在开发一个带有cocos2dx的2D游戏,其中我还是很新...在游戏中,我想将一些UI元素组合在一起(我打算将它们组合成{ {1}} S)。例如,一些文本标签和精灵形成CCLayer
,即CStatBar
。然后,此CCLayer
将包含在其他各种CStatBar
我该怎么做?我创建了CCLayer
类,然后,在包含类的init()函数内,我CStatBar
并调用CStatBar::create()
但是,状态栏没有出现...有没有明显的事情我错过了?所有的立场都是正确的。谢谢!
编辑:
注意:
1.调用子层的this->addChild(pStatBar)
,但不会渲染/看到它
2.如何调整子图层的大小以使其仅覆盖父图层的部分区域?据说ccTouchesBegan
应该只覆盖屏幕顶部区域的10%,而不是整个屏幕...
答案 0 :(得分:3)
在CParent::init()
函数中,您可以像这样初始化CSublayer
:
// Create and initialize CSublayer
CSublayer* pSublayer= CSublayer::create();
float fWidth = pSublayer->getContentSize().width;
float fHeight = pSublayer->getContentSize().height;
pSublayer->setPosition(ccp(fWidth/2.0f, fHeight/2.0f));
this->addChild( pSublayer );
并且您的CSublayer可以像其他CCLayer一样定义。
如果你想限制CSublayer小于CParent层,你可以在它的init函数中这样做:
CSublayer::init() {
// initialize the size with the size of the background sprite
CCSprite *pSpriteBackground = CCSprite::createWithSpriteFrame(
CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("background.png")
);
this->setContentSize(CCSize(pSpriteBackground->getContentSize().width, pSpriteBackground->getContentSize().height));
pSpriteBackground->setPosition(ccp(fScreenHalfWidth, fScreenHeight-(pSpriteBackground->getContentSize().height/2.0f)));
this->addChild(pSpriteBackground);
}