1

我正在我的应用程序中创建一个 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

有谁知道为什么会这样?或者我该如何解决?

4

1 回答 1

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 添加到容器中,然后将所有子节点添加到该容器中。

于 2018-02-09T02:11:59.407 回答