如何向ListView添加多个相同的节点

时间:2018-03-01 14:50:02

标签: c++ cocos2d-x cocosbuilder

我尝试将Node添加到ListView,所以:

tmp1 = aggregate(Y~., DATA[DATA$Z == 100,], mean)
tmp2 = aggregate(Y~., DATA[DATA$Z == 50,], mean)
tmp1$X2 = tmp2$X
tmp1$Y2 = tmp2$Y

graphics.off()
ggplot(DATA, aes(x = factor(X), y = Y, fill = Z)) +
    geom_boxplot(width = 0.5, outlier.shape = NA) +
    geom_segment(data = tmp1,
                 aes(x = as.numeric(factor(X)) - 0.125, y = Y,
                     xend = as.numeric(factor(X2)) + 0.125, yend = Y2)) +
    facet_grid(Gp ~ Fc)

但是得到了这样的错误:

  

CCASSERT(child-> _parent == nullptr,"已添加的孩子。无法再添加");

我需要做什么?

2 个答案:

答案 0 :(得分:0)

这些节点是否只是克隆?如果是,您可以在每次迭代时添加相同的副本:

auto nodeToAdd = loadCcbAsNode("fileccb.ccbi").get();
listView->addChild(nodeToAdd);

for(size_t i = 1; i < 9; i++) {
    listView->addChild(nodeToAdd->clone());
}

或者,或者,如果它是一次性操作,请随时加载一些实例:

for(size_t i = 1; i < 10; i++) {
    listView->addChild(loadCcbAsNode("fileccb.ccbi").get());
}

答案 1 :(得分:0)

for (int i = 1; i < 100; i++)
{
    NodePtr nodeToAdd = loadCcbAsNode("fileccb.ccbi");
    nodeToAdd->setPosition(0,i*45);                      // 45-size of height my node
                                                         // need to bias
    listView->addChild(nodeToAdd.get());
}

事实证明,当我创建auto nodeToAdd = loadCcbAsNode("fileccb.ccbi").get();时,nodeToAdd有一个类型的Node,但是cocos有特殊的智能指针NodePtr,我用NodePtr类型调用它,它的指针会自动增加逆一个,而Node则不然。