如何创建带有自定义颜色的中文和日文字符的标签
How to create Label with Chinese and Japanese characters with custom color
我使用 cocos2d-x (c++) 版本。 tvOS (Apple TV) 上的 3.8
我不想使用 TTF 版本,因为我没有像样的 Arial TTF 字体,它包括中文和日文字符,但文件大小可以接受(最多 1MB)。
如果我使用 Label::createWithSystemFont()
这不允许更改文本颜色。至少我没找到怎么改。
auto *n = Label::createWithSystemFont("洗牌位置", font, fontSize, dimensions, hAlignment, vAlignment);
n->setColor(Color3B::RED);
n->setTextColor(Color4B::RED);
这会产生黑色文本...
编辑:
在绝望的情况下,我尝试了一些你可能认为我疯了的事情。
但它也不起作用。结果还是黑的。您知道如何更改标签的颜色吗?
Node* NodeFactory::colorizeLabel (Label *lbl, const Color3B& color)
{
auto *maskSprite = lbl;
CCRenderTexture * rt;
rt = CCRenderTexture::create(
maskSprite->getContentSize().width*maskSprite->getScaleX(),
maskSprite->getContentSize().height*maskSprite->getScaleY()
, kCCTexture2DPixelFormat_RGBA8888
);
maskSprite->setPosition(ccp(
(maskSprite->getContentSize().width*maskSprite->getScaleX())/2,
(maskSprite->getContentSize().height*maskSprite->getScaleY())/2
)
);
//rt->begin();
rt->beginWithClear(120, 120, 0, 0);
((Node*)maskSprite)->visit();
rt->end();
Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
retval->setColor(Color3B::WHITE);
//retval->setBlendFunc((ccBlendFunc) { GL_SRC_COLOR, GL_ONE });
return retval;
}
已找到 tvOS 上彩色系统字体的解决方案:
修复:CCDevice-tvos.mm:
原始数据:
[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle }];
新:
[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle,
NSForegroundColorAttributeName:[UIColor colorWithRed:info->tintColorR green:info->tintColorG blue:info->tintColorB alpha:info->tintColorA]
}];
我使用 cocos2d-x (c++) 版本。 tvOS (Apple TV) 上的 3.8
我不想使用 TTF 版本,因为我没有像样的 Arial TTF 字体,它包括中文和日文字符,但文件大小可以接受(最多 1MB)。
如果我使用 Label::createWithSystemFont()
这不允许更改文本颜色。至少我没找到怎么改。
auto *n = Label::createWithSystemFont("洗牌位置", font, fontSize, dimensions, hAlignment, vAlignment);
n->setColor(Color3B::RED);
n->setTextColor(Color4B::RED);
这会产生黑色文本...
编辑:
在绝望的情况下,我尝试了一些你可能认为我疯了的事情。 但它也不起作用。结果还是黑的。您知道如何更改标签的颜色吗?
Node* NodeFactory::colorizeLabel (Label *lbl, const Color3B& color)
{
auto *maskSprite = lbl;
CCRenderTexture * rt;
rt = CCRenderTexture::create(
maskSprite->getContentSize().width*maskSprite->getScaleX(),
maskSprite->getContentSize().height*maskSprite->getScaleY()
, kCCTexture2DPixelFormat_RGBA8888
);
maskSprite->setPosition(ccp(
(maskSprite->getContentSize().width*maskSprite->getScaleX())/2,
(maskSprite->getContentSize().height*maskSprite->getScaleY())/2
)
);
//rt->begin();
rt->beginWithClear(120, 120, 0, 0);
((Node*)maskSprite)->visit();
rt->end();
Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
retval->setColor(Color3B::WHITE);
//retval->setBlendFunc((ccBlendFunc) { GL_SRC_COLOR, GL_ONE });
return retval;
}
已找到 tvOS 上彩色系统字体的解决方案: 修复:CCDevice-tvos.mm:
原始数据:
[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle }];
新:
[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle,
NSForegroundColorAttributeName:[UIColor colorWithRed:info->tintColorR green:info->tintColorG blue:info->tintColorB alpha:info->tintColorA]
}];