fnt字体的一个问题

看图:

这是编辑器上用了4个fnt字体,分别输入值,1,12,123,1234.

经过代码处理:
rootNode = CSLoader::createNode(“Node1.csb”);
rootNode->setPosition(visibleSize.width/2,visibleSize.height/2);
this->addChild(rootNode);

auto font1 = static_castui::TextBMFont*(rootNode->getChildByName(“BitmapFontLabel_1”));
auto font2 = static_castui::TextBMFont*(rootNode->getChildByName(“BitmapFontLabel_2”));
auto font3 = static_castui::TextBMFont*(rootNode->getChildByName(“BitmapFontLabel_3”));
auto font4 = static_castui::TextBMFont*(rootNode->getChildByName(“BitmapFontLabel_4”));

font1->setString(“12”);
font2->setString(“12”);
font3->setString(“12”);
font4->setString(“12”);

如何才能避免这种字体拉伸

font1->setString(“1”);
font2->setString(“12”);
font3->setString(“123”);
font4->setString(“1234”);
再打印出来

这样是没问题的,如果位数是一样的话,字体就不会拉伸,不过正常我们在编辑器设置一个字体不确定是几位数

一般数字标签,最少要包括0123456789 这十个数字
搜搜fnt原理,先学习一下吧,还有疑问的话继续回复我

贴图贴不上来,不过如果编辑上设置字数和setstring一样的话,宽度不会受到拉伸,TextBMFont这个东西用的也是Label的:5::5:

我的问题还是没有得到解决啊 :9:

你试试导入0~9共10 个阿拉伯数字,然后随意setstring,再试试

我的fnt是没问题的,如果我用label来做没问题,但是我出现的问题是我通过ccs编辑器获取这个字体然后改变这个值,就会出现这个问题。你可以去看源码,

void TextBMFont::setString(const std::string& value)
{
if (value == _labelBMFontRenderer->getString())
{
return;
}
_stringValue = value;
if (!_fntFileHasInit)
{
return;
}
_labelBMFontRenderer->setString(value);
updateContentSizeWithTextureSize(_labelBMFontRenderer->getContentSize());
_labelBMFontRendererAdaptDirty = true;
}
我的估计是这个里面把size给设置了
void Widget::updateContentSizeWithTextureSize(const cocos2d::Size &size)
{
if (_unifySize)
{
this->setContentSize(size);
return;
}
if (_ignoreSize)
{
this->setContentSize(size);
}
else
{
this->setContentSize(_customSize);
}
}

加我Q:3094485951

font1->ignoreContentAdaptWithSize(true);
font2->ignoreContentAdaptWithSize(true);
font3->ignoreContentAdaptWithSize(true);
font4->ignoreContentAdaptWithSize(true);

好像可以了,谢了:14::14: