可能在一个CCLabelTTF中有不同的颜色字符串?

时间:2013-07-30 06:28:21

标签: cocos2d-iphone cocos2d-x

我可以像这样使用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?

6 个答案:

答案 0 :(得分: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。 Link

答案 1 :(得分:3)

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

initialize results array
iterate through ratings
  create new empty object (current_object)
  add current_object to results array
  iterate through employees
    iterate through quarters
      iterate through weeks
        add value for i-th week as week_i to current_object

重要提示:我之前只使用 True Type字体

进行了尝试

答案 2 :(得分:1)

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

答案 3 :(得分: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.

答案 4 :(得分:0)

不要不要通过使用

明确设置颜色
 lablel->setTextColor();//don't do this

相反,使用设置每个字母的颜色

lablel->getLetter(0)->setColor(cocos2d::Color3B(255, 0, 0));

答案 5 :(得分:-1)

你也可以用一些符号来分割字符串&#34; @ Red&#34;然后使用原生的iOS和Android方法来实现效果。

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

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

如果有帮助,请告诉我。感谢