我使用cocos2d-x(c ++)ver。 3.8 on tvOS(Apple TV)
我不想使用TTF版本,因为我没有合适的Arial TTF字体,其中包含中文和日文字符,但文件大小可接受(最多1MB)。
如果我使用Label::createWithSystemFont()
,则不允许更改文字颜色。至少我没有找到它如何改变它。
auto *n = Label::createWithSystemFont("洗牌位置", font, fontSize, dimensions, hAlignment, vAlignment);
n->setColor(Color3B::RED);
n->setTextColor(Color4B::RED);
这会产生黑色文字......
修改
在绝望的情况下,我尝试了一些你可能认为我疯了的事情。 但它既不起作用也不起作用。结果仍然是黑色的。你知道如何改变Label的颜色吗?
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;
}
答案 0 :(得分:0)
在tvOS上找到有色系统字体的解决方案: FIX:CCDevice-tvos.mm:
ORIG:
[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle }];
NEW:
[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle,
NSForegroundColorAttributeName:[UIColor colorWithRed:info->tintColorR green:info->tintColorG blue:info->tintColorB alpha:info->tintColorA]
}];