绘制精灵的边界框

时间:2012-10-02 21:00:27

标签: cocos2d-iphone cocos2d-x

在cocos2d-x中,如何显示作为该层子元素的所有精灵的边界框?

这是我的出发点:

void MyLayer::draw()
{
    // super draw   
    CCLayer::draw();

    // Iterate through all nodes of this layer
    for ( CCNode* node = ??? )
    {
        // Make sure the node is a CCSprite
        if ( node == CCSprite ??? )
        {
            CCSprite* sprite = (CCSprite*) node;
            ccDrawRect( sprite->boundingBox() ??? );
        }

    }
}

2 个答案:

答案 0 :(得分:1)

    //put this line at the top of your cpp file
    #define CC_VERIFY_TYPE(__OBJECT__,__CLASS_TYPE__) assert(dynamic_cast<__CLASS_TYPE__>(__OBJECT__))

    //these lines in your code
    CCObject* child;
    CCARRAY_FOREACH(m_pChildren, child)
    {
        CC_VERIFY_TYPE(child,CCSprite*);
        CCSprite* sprite = (CCSprite*) child;
        CCSize s = sprite->boundingBox().size;
        ccDrawRect(sprite->boundingBox().origin, ccpAdd(sprite->boundingBox().origin, (ccp(s.width,s.height))));

    }

答案 1 :(得分:-1)

当您在自己的图层中创建所有精灵时,您可以创建简单的节点,该节点将绘制其父级的边界框。然后,只需将此节点的实例添加到您想要查看的任何节点/精灵中。

另一种方法是在附加数组中添加要查看的所有精灵/节点,并绘制此数组中每个对象的边界框。