Cocos2d-x中的文本换行

5

我正在尝试让我的文本标签在文本长度超过其所在框时自动调整大小。同时,我还希望它支持多行功能。我在网上搜索了一些资料,发现以前的解决方案类似于如下:

CCLabelTTF::labelWithString(“This is a sentence longer than a line width.2d-x”, CGSizeMake(**0, 0**), UITextAlignmentCenter, “Thonburi”, 20);

但在Cocos中似乎不再可用,所以我不确定该怎么做。现在,我的标签设置如下:

myQuestion = Label::createWithTTF("Testing to see if text wrap will work" ,c_strFontNameBase, 50);
myQuestion->setPosition(boxLabel->getContentSize().width/2, boxLabel->getContentSize().height/2);
boxLabel->addChild(myQuestion, 50);

有没有类似上面示例的方法可以让我的工作正常运行?这似乎不应该是非常困难的事情,但我在网上找不到相关文档...

1个回答

8

我相信,你只能让标签的一个维度自适应大小,即宽度或高度可以自适应。默认情况下,当您创建标签如下所示时,标签的宽度会自动调整,并且高度是固定的:

auto label = Label::createWithTTF("Hello World gsdhsgdh gshdghsg yutywe gdgshdgy bnbjh hshhashgy hjnbdnsdhh ghhsgdhg ghghghsd ghhghsd ghghghgsd jkjkhsdjkj ououisdusydsi kkjkxncmxcjh kcxhjxhcjx jkuiushjxchxjch hjhjchxuyuychjc ", "fonts/Marker Felt.ttf", 24);
// position the label on the center of the screen
label->setPosition(Vec2(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - label->getContentSize().height));

// add the label as a child to this layer
this->addChild(label, 1);

但是,如果您需要多行支持,即固定宽度和可调整高度,只需要将标签的尺寸设置为固定宽度和零高度:

label->setDimensions(300, 0);

我希望这会有所帮助。


请注意,使用BMFonts的方法与以下方式相同:static_cast<Label*>(my_ui_TextBMFont_widget->getVirtualRenderer())->setDimensions(375, 0); - TankorSmash
如果使用cocos2d :: Text而不是标签,请使用与上述相同的策略,但使用setTextAreaSize而不是setContentSize - GameSalutes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接