如何将多个相同的节点添加到ListView
How to add multiple identical nodes to ListView
我尝试将节点添加到 ListView 中:
auto nodeToAdd = loadCcbAsNode("fileccb.ccbi").get();
for (size_t i = 1; i < 10; i++)
{
listView->addChild(nodeToAdd); // it's cocos2d::ui::ListView
// which i load to scene
}
但是得到这样的错误:
CCASSERT(child->_parent == nullptr, "child already added. It can't be added again");
我需要做什么?
这些节点是否可以简单地克隆?如果是,您可以在每次迭代时添加一个相同的副本:
auto nodeToAdd = loadCcbAsNode("fileccb.ccbi").get();
listView->addChild(nodeToAdd);
for(size_t i = 1; i < 9; i++) {
listView->addChild(nodeToAdd->clone());
}
或者,如果它是一个 one-time 动作,则随时加载几个实例:
for(size_t i = 1; i < 10; i++) {
listView->addChild(loadCcbAsNode("fileccb.ccbi").get());
}
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 不会。
我尝试将节点添加到 ListView 中:
auto nodeToAdd = loadCcbAsNode("fileccb.ccbi").get();
for (size_t i = 1; i < 10; i++)
{
listView->addChild(nodeToAdd); // it's cocos2d::ui::ListView
// which i load to scene
}
但是得到这样的错误:
CCASSERT(child->_parent == nullptr, "child already added. It can't be added again");
我需要做什么?
这些节点是否可以简单地克隆?如果是,您可以在每次迭代时添加一个相同的副本:
auto nodeToAdd = loadCcbAsNode("fileccb.ccbi").get();
listView->addChild(nodeToAdd);
for(size_t i = 1; i < 9; i++) {
listView->addChild(nodeToAdd->clone());
}
或者,如果它是一个 one-time 动作,则随时加载几个实例:
for(size_t i = 1; i < 10; i++) {
listView->addChild(loadCcbAsNode("fileccb.ccbi").get());
}
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 不会。