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

时间:2016-06-20 10:13:44

标签: c++ cocos2d-iphone cross-platform cocos2d-x sprite

我创建了一个没有精灵,并将它们添加到具有相同名称的场景中。

现在,我想删除所有这些,甚至没有任何参考的那些。我怎样才能做到这一点。

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

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

1 个答案:

答案 0 :(得分:1)

有多种方法可以实现这一点,所以我将以最简单的方式解释:

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

  

在您班级的.h文件中声明一个节点。

Node* _spriteParent;
  

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

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

现在无论何时创建精灵,只需将该精灵添加到   您刚刚创建的节点上方(不要在上面调用autorelease)   子画面)。

_spriteParent->addChild(s);

如果要删除已添加到_spriteParent的所有精灵,请调用此方法:

_spriteParent->removeAllChildren();

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