std::string star_str = "star is not star in the sky,it is on heart";//先定义一个string auto m_label = LabelTTF::create(star_str,"Arial",25);//创建一个label m_label->setPosition(Point(300,300)); this->addChild(m_label,2);如下图所示,labelTTF是不会自动换行的,那要实现换行该怎么做呢?
m_label->setDimensions(Size(200,200));//设置label的尺寸注意这里使用的不是setContentSize();运行结果如下图
std::string HelloWorld::myWrap(std::string str,int length) { unsigned int beginPos = 0; //字符串的初始位置 std::string resultStr; //返回的字符串 std::vector<std::string > str_vec; //创建一个字符串类型的顺序容器 do { str_vec.push_back(str.substr(beginPos,length)); //substr函数的作用类似剪刀,将str中从beginPos到length之间的字符串剪下来,单独放入容器中 if (beginPos+length >str.size()) { break; //当要裁剪的长度超出str的长度,则退出循环 } else { beginPos += length; } } while (true); for (unsigned int i = 0;i<str_vec.size();++i) { resultStr.append(str_vec.at(i)).append("\n"); //从容器逐一取出之前裁剪好的一段段字符串,分别在字符串后面加上换行符。append()类似胶水,将\n粘到字符串后面 } // resultStr.pop_back(); //这一句是将最后一个多余的\n给删掉 return resultStr; }
std::string star_str = "star is not star in the sky,it is on heart";//先定义一个string auto m_label = LabelTTF::create(myWrap(star_str,10),"Arial",25);//创建一个label m_label->setPosition(Point(300,300)); this->addChild(m_label,2);
结果如下图所示:
恩,就酱紫啦。
尊重原创,转载请注明来源:
Cocos2dx 小技巧(三)Label的换行,布布扣,bubuko.com
原文:http://blog.csdn.net/start530/article/details/22757281