2
votes

I am developing a 2D games with cocos2dx, in which I am still very new... inside the game, there's a number of UI Elements that I'd like to group together as one (I intend to group them into CCLayers). For example a few text labels and sprites form a CStatBar which is a CCLayer. This CStatBar will then be included in the various other CCLayer

How do I do that? I created the CStatBar class and then, inside the containing class's init() function, I CStatBar::create() and call this->addChild(pStatBar) however, the statbar did not appear... is there any obvious thing that I missed? All the positions are correct. Thanks!

EDIT:

Notes: 1. ccTouchesBegan of the sublayer is called, however it is not rendered/seen 2. How do I resize the sublayer so that it only cover partial area of the parent layer? Supposedly the CStatBar should only cover 10% of the top area of the screen, not the whole screen...

1

1 Answers

3
votes

inside the CParent::init() function, you can initialize the CSublayer like so:

        // 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 );

and your CSublayer can be defined like other CCLayer.

If you want to restrict the CSublayer to be smaller than the CParent layer, you can do so inside its init function like so:

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);
}