题
在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() ??? );
}
}
}
. 解决方案
//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))));
}
. 其他提示
当您自己创建此图层中的所有精灵时,您可以例如创建一个简单的节点,这将绘制其父的边界框。然后只需将此节点的实例添加到您要查看的任何节点/精灵。
另一种方式是添加所有精灵/节点,您要在附加数组中看到,并在此数组中绘制每个对象的边界框。
不隶属于 StackOverflow