getContentSize()面临的另一个问题是返回零宽度和高度。
我使用Drawingode创建了圆圈,但获得的内容大小却返回零。
我的工作代码是
其中rad = 100;
DrawNode *drawnode = DrawNode::create();
for ( int i = 0 ; i <100; i ++)
{
float rads = i * M_1_PI; // radians
Circle [i] .x = rad * cosf (rads); //vertex x
Circle [i] .y = rad * sinf (rads); //vertex y
}
drawnode->setPosition(Director::sharedDirector()->getVisibleSize().width/2,Director::sharedDirector()->getVisibleSize().height/2);
drawnode->drawPolygon(Circle,100,Color4F(0,0,0,0),1,Color4F(1,122,153,1));
CCSprite *spr = CCSprite::create(image);
spr->setPosition(ccp(drawnode->getContentSize().width/2,0));
drawnode->addChild(spr);
CCLog("Draw node width : %f",this->getContentSize().width);
float p = (100/spr->getContentSize().width)+0.5;
spr->setAnchorPoint(ccp(0,p));
auto rotate = RotateBy::create(3,360);
spr->runAction(CCRepeatForever::create(rotate));
this->addChild(drawnode);
请为我提供更好的工作解决方案。
提前致谢 Rishabh Shah
答案 0 :(得分:1)
由于您的节点是此处的容器,因此您必须明确计算内容大小。只有具有纹理的节点(精灵)才会返回实际内容大小,否则您将获得CCPointZero
。
你必须在DrawNode的边界框的基础上计算内容,你可以使用圆半径轻松计算,这是一个样本。
drawNode->setContentSize(CCSizeMake(2*Radius, 2*Radius))