我创建了一个没有精灵,并将它们添加到具有相同名称的场景中。
现在,我想删除所有这些,甚至没有任何参考的那些。我怎样才能做到这一点。
不使用removeChildBytag();
或不使用标签。
void Science::onBallMovement(cocos2d::Ref* pSender){
auto sp = (Sprite*)pSender;
v1 = sp->getPosition();
if (v1 == v2) {
return;
}
if(v1!=v2) {
if (sp->getTag()==1) {
s = Sprite::create("Dot.png");
}
if (sp->getTag()==2) {
s = Sprite::create("BlueDot.png");
}
s->setPosition(v1);
s->autorelease();
this->addChild(s);
}
v2 = v1;
}
void Science::update(float delta){
if (setting) {
this->onBallMovement(spr);
this->onBallMovement(spr1);
}
}
通过覆盖节点类的更新方法,我重复调用上面的内容并根据我的精灵的当前位置随机移动,我正在创建一个路径跟踪器。但现在,我想根据用户选择删除它,我该怎么办?
答案 0 :(得分:1)
有多种方法可以实现这一点,所以我将以最简单的方式解释:
初始化全局节点并删除所有子节点
在您班级的.h文件中声明一个节点。
Node* _spriteParent;
现在在类的init方法中定义节点。
_spriteParent = Node::create();
_spriteParent->setPosition(Vec2::ZERO);
this->addchild(_spriteParent);
现在无论何时创建精灵,只需将该精灵添加到 您刚刚创建的节点上方(不要在上面调用autorelease) 子画面)。
_spriteParent->addChild(s);
如果要删除已添加到_spriteParent的所有精灵,请调用此方法:
_spriteParent->removeAllChildren();
你完成了。希望它有所帮助。