2015-09-14 2 views
0

Я делаю messagewindow. И я хочу контролировать каждое письмо.
Я запустил Sprite # setVisible для управления каждой буквой, но он не работает.
Этикетка # setVisible работает нормально.Cocos2d-x 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); 
} 

спасибо.

EDIT: Я изменил версию кошки «3.8 финала» на «3.7.1», он стал работать. Итак, я открыл вопрос о github.

ответ

1

ttfLabel не поддерживают «getLetter()», если вы хотите контролировать ту каждую букву, вам нужно использовать bmfontLabel

+0

«getLetter» работает я думаю, потому что, когда я пытаюсь запустить действие «JumpBy», он работал – fullmetal248

Смежные вопросы