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 ответ

Это происходит потому, что 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 в контейнер и добавьте всех своих детей в этот контейнер.

Другие вопросы по тегам