我正在制作信息窗口。我想控制每一封信 我运行了Sprite #setVisible来控制每个字母,但它不起作用 标签#setVisible正常工作。
这是我的代码。
void MessageWindowLayer::setText(std::string& text) {
this->message = text;
Label* msgLabel = Label::createWithTTF(message, "fonts/JKG-L_3.ttf", 24);
msgLabel->setPosition(cocos2d::ccp(0, back->getContentSize().height));
msgLabel->setAnchorPoint(ccp(0, 1));
this->runAction(CallFunc::create([msgLabel]() {
int num = msgLabel->getStringLength() + msgLabel->getStringNumLines() - 1;
for (int i = 0; i < num; i++) {
Sprite* letter = msgLabel->getLetter(i);
if (nullptr != letter) {
letter->setVisible(false);
log("isVisible:%d", letter->isVisible()); // isVisible returns "0" but letters still show
//letter->runAction(
// Sequence::create(
// DelayTime::create(0.2f*i),
// //JumpBy::create(0.5f, Point::ZERO, 60, 1),
// Show::create(),
// NULL
// ));
}
}
}));
parentLayer->addChild(msgLabel);
}
谢谢。
编辑: 我改变了cocos版本&#34; 3.8 final&#34;到&#34; 3.7.1&#34;它变得有效了。 所以我在github上打开了问题。
答案 0 :(得分:1)
ttfLabel不支持'getLetter()'如果你想要控制每个字母,你需要使用bmfontLabel