【问题标题】:CCScrollView returns one childrenCCScrollView 返回一个孩子
【发布时间】:2015-02-20 05:35:33
【问题描述】:

我正在研究 cocos2dx 3.0,并且正在研究 cocos2d::extension::ScrollView,遇到一个奇怪的问题,滚动视图没有返回所有 Nodes添加到它,只返回一个孩子,这也是一个不同的孩子..见下面我的代码

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回调函数下面的行中给出children count as1

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

而令人惊讶的是,下面的行删除了所有的孩子。

scrollView->removeAllChildren();

这是一种不寻常的行为,有什么可以帮助我摆脱这种情况的吗?

谢谢。

【问题讨论】:

    标签: cocos2d-x cocos2d-x-3.0 ccscrollview


    【解决方案1】:

    滚动视图的唯一子节点是“内容节点”。您不应该直接在滚动视图中添加或获取子节点,而是通过 contentNode 属性添加内容节点并从该内容节点添加和获取子节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多