有些技巧你不知道不要紧,但知道后会很牛逼。

近来玩上了刀塔传奇,这游戏做的真心不错。为什么会有这种评价呢?本人虽然是开发游戏的,但能让我玩超过一小时的游戏真心不多(不包括自己参与开发的游戏,嘿)。我虽然没玩过dota,但却是英雄联盟的狂热爱好者!排位白银分段啊有木有!求超越!

----------------

好了,这次又把Label这货拉出来鞭一鞭。
我先创建一个label

std::string star_str = "star is not star in the sky,it is on heart";//先定义一个stringauto m_label = LabelTTF::create(star_str,"Arial",25);//创建一个label
m_label->setPosition(Point(300,300));
this->addChild(m_label,2);

如下图所示,labelTTF是不会自动换行的,那要实现换行该怎么做呢?

说到Label如何换行,首先想到的就是设置label的尺寸,让它到了边界时要懂得自己换行,添加一行代码:

m_label->setDimensions(Size(200,200));//设置label的尺寸

注意这里使用的不是setContentSize();运行结果如下图

上面这种方法固然方便,但还是有它的局限性: 假如我们做的是一个类似微信的聊天对话框,这种对话框一个特点就是会随着你文字长度的改变而改变。而如果我们在这里讲Label的尺寸给写死了,那对话框也就跟着失去它的灵活性了。
这里有没有更酷的解决办法么?答案是肯定的。
LabelTTF有一个好处就是会在字符串中有"\n"的地方换行,利用这个特点可以写一个自动换行的函数,参考代码如下:
//str是传入的字符串,length是每行的长度

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;
}

现在用这种方法重写一次label的创建过程

std::string star_str = "star is not star in the sky,it is on heart";//先定义一个stringauto m_label = LabelTTF::create(myWrap(star_str,10),"Arial",25);//创建一个label
m_label->setPosition(Point(300,300));
this->addChild(m_label,2);

结果如下图所示:

恩,就酱紫啦。

尊重原创,转载请注明来源:

Cocos2dx 小技巧(三)Label的换行相关推荐

  1. Cocos2dx 小技巧(一)预定义文件路径

    通宵想了一晚(如果你信的话),打算出一栏cocos2dx小技巧相关的博客,有以下几种特点: 1.精简: 2.实用: 3.偶尔带点暴力,黄... 我们的主题是:有些技巧你不知道不要紧,但知道后会很牛逼. ...

  2. 经验分享丨PMP备考小技巧三则

    首先,先浪一下: 参与2019年12月份的考试,很意外考试能够拿到5A,其实我的基础还是比较差的,能够拿到5A纯属侥幸,在此首先感谢清晖远程D班张老师的监督学习.另外与大家分享一下关于考试的一些小技巧 ...

  3. MATLAB | 那些你不得不知道的MATLAB小技巧(三)

    1: 比较常用绘图函数介绍 1.1: 填充图 半透明填充图:设置faceAlpha属性为0-1的数值即可调整透明度: % 生成三组x,y数据 x=linspace(-8,12,100); y1=nor ...

  4. iOS开发小技巧--计算label的Size的方法总结

    计算label的Size方法 sizeWithAttributes:方法 适用于不换行的情况,宽度不受限制的情况 /// 根据指定文本和字体计算尺寸 - (CGSize)sizeWithText:(N ...

  5. Cocos2dx 小技巧(九)现成的粒子特效

    和高中的她 差不多有两三年没见面了吧.下午她正好来泉州,我俩出来一起吃了个饭.怎么说呢,自从高中毕业后我俩的联系就少了很多,大学期间也就见过两三面吧.如今毕业也快一年了,她已是人妇,而我自己的感情也是 ...

  6. Cocos2dx小技巧 单例

    2019独角兽企业重金招聘Python工程师标准>>> 首先来说下什么是单例:   单例模式是设计模式中最简单的形式之一.这一模式的目的是使得类的一个对象成为系统中的唯一实例.  单 ...

  7. Python3 小技巧三 每十个数取一次值

    题:元组有99个元素,我要每10个取一次 获得[xx,xx,xx,xx,...] 答案形式:[1-10]  [11-20]  [21-30] .... a = [1,2,3,4,5,6,7,8,9,1 ...

  8. 盘点Windows10系统的使用小技巧三 —— 虚拟桌面

    目录 用途介绍 使用介绍 快捷键介绍 很多时候,我们总是因桌面上那多且凌乱的窗口而烦躁不堪,有时候多希望能够同时使用多个显示屏,然而这并不现实. 其实,Windows10系统已经自带了一个解决方案-- ...

  9. 自带flash的浏览器_小技巧:三步还你一个干净清爽无广告的360浏览器

    作为六年的老司机,说实话360旗下的浏览器(PC版)还是比较好用的.但是随着360浏览器装机量的膨胀,各种广告植入.推广.弹窗,这对于喜欢干净清爽简洁风格的用户来说很是不爽~ 是时候找个时间来给自己的 ...

最新文章

  1. sendmail(一)
  2. PyQt5 技术篇-设置alignment对齐方式。Qt Designer设置文本对齐方式。居中、左对齐、右对齐、上对齐、下对齐。
  3. asp(javascript)中request.form(a).count 在ie6中总是为0
  4. Game as a Service —— 开源云游戏搭载WebRTC
  5. php加mySQL制作网络硬盘_PHP实现的简单网络硬盘
  6. css3布局篇(双飞翼)
  7. 个性签名设计软件_佩服!我用Python设计了一个签名软件
  8. CentOS7网络配置,安装jdk,tomcat和mysql全过程
  9. maven父子工程 + springboot
  10. java怎样实现数据库 选择列属性的select查询??_除了不要 SELECT * ,使用数据库还应知道的11个技巧!...
  11. *第十三周*数据结构实践项目二【验证Kruskal算法】
  12. 【POJ 2456】【二分答案】Aggressive cows(暑假 No.1)
  13. Delphi中使用ReportMachine 6.5中汇总行不进行汇总的设置问题
  14. html导入.obj,如何用Babylon.js导入一个.obj模型
  15. 使用kettle向HBase导入数据
  16. LookAhead优化器方法
  17. Base64 - 维基百科,自由的百科全书
  18. metasploit-framework(MSF)--Github翻译
  19. 通过QQ邮件发送文档到kindle,kindle收不到的问题
  20. plt画网格图_matplotlib子图与多种图形绘制

热门文章

  1. linux mysql 内存监控工具_Linux主机和MySQL实时监控工具-orzdba
  2. 软件测试(黑马P0-P10总结)
  3. [小e分享]之[Oracle数据库管理艺术_11g新特性].(美)阿拉派蒂电子书(附pdf下载)
  4. php的SOAP-CLIENT详解
  5. BUGKU CTF (Crypto第一篇)
  6. 2017AP计算机科学5分线,2017年最新AP考试各科目分数线
  7. HTML--table--跨行跨列
  8. 一个AS3 socket解码设计的错误思路
  9. Ubuntu18上安装QSV+FFMPEG环境
  10. 电脑重启后python导入的库不见_每次重启电脑后,桌面的文件就不见了,怎么回事啊...