我已经创建了一个精灵的否,并以相同的参考将它们添加到场景中,现在,如何使用标签删除它们

I have created a no of sprites and added them to the scene with the same reference and now, how can i remove them with out using tags?

本文关键字:添加 参考 何使用 标签 删除 现在 创建 精灵 一个      更新时间:2023-10-16

我已经创建了一个精灵的否,并以相同名称添加到场景中。

现在,我想删除所有这些,甚至没有任何参考的所有这些。我该如何实现。

使用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);
}
}

通过覆盖节点类的更新方法,我正在反复调用上述内容,并基于我的精灵的当前位置,该位置随机移动,我正在创建一个路径跟踪器。但是现在,我想根据用户选择将其删除,我该怎么做?

有多种方法可以实现这一目标,因此我要解释最简单的方法:

初始化全局节点并删除所有孩子

在类的.h文件中声明一个节点。

Node* _spriteParent;

现在在类的初始方法中定义节点。

_spriteParent = Node::create();
_spriteParent->setPosition(Vec2::ZERO);
this->addchild(_spriteParent);

现在,每当您创建精灵时,只需将该精灵添加到 您刚刚创建的节点上方(请勿在 精灵)。

_spriteParent->addChild(s);

当您要删除已添加到_spriteparent的所有精灵时,请致电此方法:

_spriteParent->removeAllChildren();

你就完成了。希望它有帮助。