this-> getContentSize()。width给我零响应但是图层等于设备宽度和高度

时间:2014-09-30 11:32:18

标签: android cocos2d-x cocos2d-x-3.0

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

1 个答案:

答案 0 :(得分:1)

由于您的节点是此处的容器,因此您必须明确计算内容大小。只有具有纹理的节点(精灵)才会返回实际内容大小,否则您将获得CCPointZero

你必须在DrawNode的边界框的基础上计算内容,你可以使用圆半径轻松计算,这是一个样本。

drawNode->setContentSize(CCSizeMake(2*Radius, 2*Radius))