从标签中提取一个由CClabelBMFont制作的char

时间:2014-06-16 06:54:24

标签: c++ cocos2d-x

我试图慢慢地从字符串中显示一个字符,比如小说游戏。

要做到这一点,我首先使用CCLabelBMFont编写如下代码,从字符串中提取一个字符。

string str = "I like an apple";

CCLabelBMFont *label = CCLabelBMFont::create(str.c_str(), "font.fnt");

CCSprite *spr = (CCSprite*)label1->getChildByTag(0);
spr->setPosition(ccp(100, 100));

this->addChild(spr);

我想在GameScene中展示从CCLabelBMFont中提取的spr(这个)

但我收到的错误如下

CCAssert( child->m_pParent == NULL, "child already added. It can't be added again");

为什么出现这样的错误?我该怎么办?

1 个答案:

答案 0 :(得分:0)

查看您使用的方法以及您获得的错误。您使用getChildByTag(...)来获取精灵。所以你得到的是child的{​​{1}}节点,意味着它有一个CCLabelBMFont。你的错误说这个精灵不能再作为孩子添加,因为它已经有了父。

我无法想出一种实现你想要的直截了当的方法,但是你可以尝试一些建议:

  • 将每个字母添加为单独的标签 - 说实话,这实际上是愚蠢的,因为它会不必要地增加您的代码并使用太多内存。
  • 让您的标签中的孩子看不见,然后让他们一个接一个地看到。创建标签时,遍历其子项并在其上调用parent。然后安排一个电话,您将在后续的孩子上拨打setVisible(false)
  • 可能创建setVisible(true)的子类和/或创建自定义操作可能是最灵活的方式,但可能不是最简单的方法。

如果有什么不清楚,请告诉我!