繁体   English   中英

从CClabelBMFont制成的标签中提取一个字符

[英]To extract one char from label that are made from CClabelBMFont

我试图慢慢地从字符串中显示一个字符,就像新游戏一样。

为此,首先,我使用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(this)

但是我得到如下错误

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

为什么会出现这种错误? 以及我该怎么办?

查看您使用的方法和错误。 您可以使用getChildByTag(...)来获取精灵。 因此,您得到的是CCLabelBMFontchild节点,这意味着它有一个parent 您的错误表明此子级不能再作为子级添加,因为它已经有一个父级了。

我想不出一种直截了当的可靠方法来实现您想要的目标,但是您可以尝试以下建议:

  • 将每个字母添加为单独的标签-老实说,这确实很愚蠢,因为它不必要地增加了代码数量,并且会占用太多内存。
  • 使标签的子项不可见,并使它们一一可见。 创建标签时,请遍历其子对象并对其调用setVisible(false) 然后安排一个调用,在该调用中您将在后续子级上调用setVisible(true)
  • 可能创建LabelBMFont子类和/或创建自定义动作可能是最灵活的方法,但可能并非最简单。

让我知道是否有任何不清楚的地方!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM