2014-09-30 2 views
0

getContentSize()가 너비와 높이를 0으로 반환하는 문제가 하나 더 있습니다.this-> getContentSize(). width 제로 응답을 제공하지만 레이어가 장치 너비와 높이와 같습니다.

나는 Drawnode를 사용하여 원을 만들고 콘텐츠 크기를 가져 오는 대신 0을 반환합니다.

내 작업 코드는

입니다. 여기서 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); 

더 나은 작업을 위해 제게 해결책을주십시오. 리 샤브 샤

답변

1

노드가 여기에 컨테이너이기 때문에 미리 에서

덕분에, 그러므로 당신은 명시 적으로 컨텐츠 크기를 계산해야합니다. 텍스처가있는 노드 (Sprite) 만 실제 내용 크기를 반환합니다. 그렇지 않으면 CCPointZero이됩니다.

DrawNode의 경계 상자를 기준으로 콘텐츠를 계산해야하며 원 반경을 사용하여 쉽게 계산할 수 있습니다. 여기에 샘플이 있습니다.

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

+0

고맙습니다 Patidar 을 @vikas도 내이 문제가이 링크 http://stackoverflow.com/questions/26116658/setcontentsize-is-not-working-in-cocos2dx3-0에 따라 해결하십시오 –