cocos2d-x CCScrollview孩子不受锚点影响?

时间:2013-11-19 00:14:23

标签: cocos2d-x ccscrollview

我正在我的应用中创建CCScrollview

scrollView = CCScrollView::create();
scrollView->retain();
scrollView->setViewSize(CCSize(size.width,size.height - 100));
scrollView->setContentSize(CCSize(size.width,1000));
scrollView->setDirection( kCCScrollViewDirectionVertical );
scrollView->setPosition(ccp( 0,50 ) );
scrollView->setContainer( this->getParent() );

this->addChild(scrollView, 5);

现在当我像滚动视图一样添加一个孩子时:

titleLabel = CCLabelTTF::create("Squares", "Thonburi", 20);
titleLabel->setPosition(ccp(0, scrollView->getViewSize().height*0.90));
scrollView->addChild(titleLabel, 1);

它渲染到正确的点,即0,50,锚点位于0,0

如果我改变锚点,虽然说1,1这样

titleLabel->setAnchorPoint(ccp(1, 1));

它仍然呈现为好像它的锚点为0,0

任何人都知道为什么会这样吗?或者我如何解决它?

1 个答案:

答案 0 :(得分:0)

会发生这种情况,因为CCScrollView会将添加的子节点的锚点重置为容器视图:

void CCScrollView::addChild(CCNode * child, int zOrder, int tag)
{
    child->ignoreAnchorPointForPosition(false);
    child->setAnchorPoint(ccp(0.0f, 0.0f));
    if (m_pContainer != child) {
        m_pContainer->addChild(child, zOrder, tag);
    } else {
        CCLayer::addChild(child, zOrder, tag);
    }
}

我其实不确定,为什么这是必要的。解决这个问题的方法是先将CCNode添加到容器中,然后将所有子节点添加到该容器中。