1

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

    }
}
4

2 に答える 2

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

    }
于 2012-10-02T23:15:25.220 に答える
-1

このレイヤーのすべてのスプライトを自分で作成すると、たとえば、親のバウンディング ボックスを描画する単純なノードを作成できます。次に、このノードのインスタンスを、見たいノード/スプライトに追加するだけです。

もう 1 つの方法は、表示するすべてのスプライト/ノードを追加の配列に追加し、この配列内の各オブジェクトのバウンディング ボックスを描画することです。

于 2012-10-02T21:07:17.490 に答える