1

我可以像这样使用 CCLabelTTF,(cocos2d-x v2.1.4)

CCLabelTTF* ableText = CCLabelTTF::create("hello red blue green", "Arial", 9);
ableText->setPosition(ccp(100, 100));
ableText->setAnchorPoint(ccp(0.5, 0.5));
ableText->setColor(ccc3(100, 100, 100));
ableText->setHorizontalAlignment(kCCTextAlignmentCenter);
this->addChild(ableText, 1);

但是,我想给字符串不同的颜色。
"red" => 红色
"blue" => 蓝色
"green" => 绿色

是否可以使用一个 CCLabelTTF?

4

6 回答 6

4

您可以通过像这样的精灵访问它们来独立更改每个字母的颜色

message_label->getLetter(6)->setColor(Color3B::RED);

重要提示:我只用True Type 字体尝试过这个

于 2015-12-22T09:14:33.807 回答
3

stubma的 'CCRichLabelTTF' 解决方案使用样式标签支持此功能。

 * TTF label which support different style in a string. By using a tag description such as:
 * 'Hell[color=ffff0000]o[/color]", the 'o' character will be in red color. If you want 
 * a '[' character, use '\' to escape.

检查他的github。关联

于 2014-07-07T04:51:24.357 回答
1

不,您必须将字符串拆分为每种颜色的单独标签。

于 2013-07-30T08:42:43.013 回答
0
you can do that Using Simply CCLabelBMFont. Because you can simply Access the Each character using index value. 


CCLabelBMFont *lblInfo = [CCLabelBMFont labelWithString:@"Multi Color Label" fntFile:@"SSPro.fnt"];


then, you can Access the character using Index path.

  for (i=starting index; i<ending index; i ++) {

        CCSprite *charSprite = (CCSprite *)[[lblInfo children] objectAtIndex:i];
        charSprite.color = [CCColor redColor];
    }
set or change the color of character.
于 2014-02-15T08:32:59.417 回答
0

Don't Don't 不要通过使用显式设置颜色

 lablel->setTextColor();//don't do this

而是通过使用设置每个字母颜色

lablel->getLetter(0)->setColor(cocos2d::Color3B(255, 0, 0));
于 2020-06-24T06:26:43.120 回答
-1

你也可以用一些符号分割字符串,比如“@Red”,然后使用原生的 iOS 和 Android 方法来产生效果。

对于 _initWithString 中 CCImage.mm 文件中的 iOS,您可以使用 NSMutableAttributedString 然后按这些标签拆分,然后设置范围颜色。这样您就不必创建不同的标签

对于 Cocos2dXBitmap.java 中的 Android,您可以在遍历循环时创建新的 Paint 对象。

让我知道这是否有帮助。谢谢

于 2014-12-30T19:58:12.257 回答