Cocos2dx子层

时间:2013-08-20 04:04:15

标签: cocos2d-x

我正在开发一个带有cocos2dx的2D游戏,其中我还是很新...在游戏中,我想将一些UI元素组合在一起(我打算将它们组合成{ {1}} S)。例如,一些文本标签和精灵形成CCLayer,即CStatBar。然后,此CCLayer将包含在其他各种CStatBar

我该怎么做?我创建了CCLayer类,然后,在包含类的init()函数内,我CStatBar并调用CStatBar::create()但是,状态栏没有出现...有没有明显的事情我错过了?所有的立场都是正确的。谢谢!

编辑:

注意: 1.调用子层的this->addChild(pStatBar),但不会渲染/看到它 2.如何调整子图层的大小以使其仅覆盖父图层的部分区域?据说ccTouchesBegan应该只覆盖屏幕顶部区域的10%,而不是整个屏幕...

1 个答案:

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