我正在我的应用中创建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
任何人都知道为什么会这样吗?或者我如何解决它?
答案 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添加到容器中,然后将所有子节点添加到该容器中。