2015-02-20 4 views
0

Я работаю на cocos2dx 3.0, и работает на cocos2d :: расширение :: ScrollView, получив странную проблему, является Scrollview не возвращает все узлы добавили к нему, просто возвращается один ребенок, который тоже отличается один .. Смотрите мой код нижеCCScrollView возвращает один детский

void Characters::setupScroll(){ 
    Size winSize = Director::getInstance()->getWinSize(); 

    if(!scrollView){ 
     scrollView=cocos2d::extension::ScrollView::create(Size(winSize.width*1.0,winSize.height*0.8)); 
     scrollView->setDirection(cocos2d::extension::ScrollView::Direction::HORIZONTAL); 
     scrollView->setPosition(Vec2(winSize.width*0.0,winSize.height*0.0)); 
     this->addChild(scrollView); 

     scrollView->setClippingToBounds(true); 
     scrollView->setBounceable(true); 
     scrollView->setTouchEnabled(true); 

    } 

    float x=0.20; 
    for(int i=0;i<4;i++){ 
     CharacterCell *cell=CharacterCell::createCell((kPlayer)i, CC_CALLBACK_1(Characters::chooseCharacterCallback, this)); 

     Vec2 pos=Vec2(winSize.width*x,winSize.height*0.3); 
     cell->setPosition(pos); 
     x=x+0.35; 
     scrollView->addChild(cell); 
     cell->setTag(100+i); 
     cell->setScale(.9); 

    } 
    scrollView->setContentSize(Size(winSize.width*x,0.0)); 
} 

Теперь на каждом выборе ячейки я делаю см ниже

void Characters::chooseCharacterCallback(Ref *sender){ 
    CharacterCell *cell=(CharacterCell *)sender; 

    //HERE I GET 1 AS CHILDREN COUNT 
    printf("%zd",scrollView->getChildrenCount()); 


    Vector<Node*> cells=scrollView->getChildren(); 

    for(int i=0;i<scrollView->getChildrenCount();i++){ 
     CharacterCell *iCell=(CharacterCell *)cells.at(i); 
     iCell->setScale(0.9); 
    } 

    auto scaleup=ScaleTo::create(.3, 1.15); 
    auto ease=EaseBackIn::create(scaleup->clone()); 
    cell->runAction(ease); 

} 

В chooseCharacterCallback callba Функция ck ниже строки дает children count as .

printf("%zd",scrollView->getChildrenCount()); 

В то время как на удивление ниже линии удаляются все дети.

scrollView->removeAllChildren(); 

Это необычное поведение, может ли кто-нибудь помочь мне выбраться из этого?

Спасибо.

ответ

1

Единственный дочерний элемент прокрутки - это «узел контента». Вы не должны добавлять или получать детей в/из вида прокрутки напрямую, вместо этого добавлять узел контента через свойство contentNode и добавлять и получать детей из этого узла контента.

+0

Спасибо. Оно работает. – iphonic