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

近来玩上了刀塔传奇,这游戏做的真心不错。为什么会有这种评价呢?本人虽然是开发游戏的,但能让我玩超过一小时的游戏真心不多(不包括自己参与开发的游戏,嘿)。我虽然没玩过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. docker、k8s 简介
  2. 将两个DataFrame拼接起来,除了concat还有append()
  3. 2.2.7 局部最优化问题
  4. 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式
  5. linux设备驱动模型及其他,Linux设备驱动模型
  6. 苹果首款自研芯片Mac成本可能上升 因设计改变
  7. python怎么读取csv文件-Python读取csv文件(详解版,看了无师自通)
  8. PowerMock进行mock测试
  9. java自动发送qq消息
  10. 怎么做一个专业的软件安装包?
  11. 小米路由器 一直常亮黄灯 修复方法
  12. dfs应用,迷宫地图解救小哈
  13. 日本教育家多湖辉的《学生用功术》 (1)
  14. IPFS 之包管理器GX
  15. 最新成果展示:Ga2O3-SBD计算模型
  16. 【剑指offer】leetcode刷题 -- Python3实现 -- 共75题(更新中)
  17. 集成OpenLDAP与Kerberos实现统一认证(一):整合后台数据库
  18. 关于身份证图片加密安全技术
  19. 智能导购系统设计与实现
  20. Overview 面板重要监控指标详解

热门文章

  1. 策 略 模 式「指 鼠 为 鸭」
  2. 愤怒的小鸟课程知识点提炼
  3. linux系统 设置分屏,Linux桌面的4种可以分屏的终端
  4. 最大股票收益问题(数组最大差问题)
  5. 2022爱分析·SD-WAN市场研究报告 | 爱分析报告
  6. 告别VR眩晕症,InvenSense公司推出六轴惯性IMU
  7. QT textEdit的读取和设置
  8. 直流无刷电机调试排坑指南(铭朗电机驱动器,CAN调试,RS-232调试)
  9. xxl-job修改默认登陆用户名密码
  10. 涨跌的例题用C语言编辑,仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案...