如何在cocos2d-x中制作包装,可滚动的文本?

时间:2016-09-23 06:09:55

标签: cocos2d-x cocos2d-x-3.0 cocos2d-x-3.x

我在ui::Text中获得了ui::Layout,并且根据内容,它会溢出。我已经查看Label::setOverflow Label::setWrap ui::Text virtualRenderer Label ui::Text ui::Scrollview,但我没有看到使其可滚动和包装的方法。

如何在确保正确包装文字的同时制作可滚动的ui::ListView

1 个答案:

答案 0 :(得分:3)

诀窍是,使用ui::Text而不是ui::Text,只使用一个项目ui::Text。这使您可以滚动并动态调整容器大小,以便更改ui::ListView的文本内容。

关键是a)将my_listview->requestDoLayout()的宽度设置为与其父ui::Panel相同的大小,将高度设置为0和b)随时在文本列表视图上调用ui::ListView* listview = ListView::create(); my_scene->addChild(listview); listview->setContentSize({300, 500}); //give it whatever size ui::Text* text = ui::Text::create("[multiline content]", "fontName.ttf", 16); text->setTextAreaSize({300, 0}); //use that same size, but use 0 height. This auto sets overflow and wrap in the backend listview->addChild(text); listview->requestDoLayout(); //this triggers resizing the listview to accommodate the //string content. Needs to happen each time you //text->setString(new_content) too. 内容发生变化,以便可滚动区域反映出来。

以下是您如何将大量文字滚动到较小的function getDate() { //var tt = document.getElementById('inputDater').value; var date = new Date();//(tt); var newdate = new Date(date); newdate.setDate(newdate.getDate() + 364); var dd = newdate.getDate(); var mm = newdate.getMonth() + 1; var y = newdate.getFullYear(); //2 digit format dd = dd.toString().length == 1 ? '0' + dd : dd; mm = mm.toString().length == 1 ? '0' + mm : mm; var someFormattedDate = y + '-' + mm + '-' + dd; console.log(someFormattedDate); }; getDate();中的示例:

{{1}}