cocos 3.10 ccui.RichText修改计算行宽的计算方法
来源:互联网 发布:甜虾 知乎 编辑:程序博客网 时间:2024/06/06 02:59
由于原来富文本不区分字符和数字和汉字的大小,统一按照一个宽度来计算,这样会发现带有数字的行不排满就换行的错误所以增加了以下代码
在UIRichText.js文件中 修改函数_handleTextRenderer(),增加绿色部分的代码
_handleTextRenderer: function (text, fontNameOrFontDef, fontSize, color) { if(text === "") return; if(text === "\n"){ //Force Line Breaking this._addNewLine(); return; } var textRenderer = fontNameOrFontDef instanceof cc.FontDefinition ? new cc.LabelTTF(text, fontNameOrFontDef) : new cc.LabelTTF(text, fontNameOrFontDef, fontSize); var textRendererWidth = textRenderer.getContentSize().width; this._leftSpaceWidth -= textRendererWidth; if (this._leftSpaceWidth < 0) { var overstepPercent = (-this._leftSpaceWidth) / textRendererWidth; var curText = text; var stringLength = curText.length; var leftLength = stringLength * (1 - overstepPercent); var leftWords = curText.substr(0, leftLength); //2017-7-8 修改引擎 富文本每行计算宽度(原来是不区分字符和数字的)
if(textRenderer && textRenderer._renderCmd && textRenderer._renderCmd._measure){var textWidth = textRenderer._renderCmd._measure(leftWords); var maxCheckTurn = 0; while(textWidth < this._customSize.width && leftLength < stringLength && maxCheckTurn <= 100){ leftLength++; leftWords = curText.substr(0, leftLength); textWidth = textRenderer._renderCmd._measure(leftWords); maxCheckTurn++; } maxCheckTurn = 0; while(textWidth > this._customSize.width && leftLength > 1 && maxCheckTurn <= 100){ leftLength--; leftWords = curText.substr(0, leftLength); textWidth = textRenderer._renderCmd._measure(leftWords); maxCheckTurn++; } maxCheckTurn = 0;
} } //修改完毕 var cutWords = curText.substr(leftLength, curText.length - 1); var validLeftLength = leftLength > 0; if(this._lineBreakOnSpace){ var lastSpaceIndex = leftWords.lastIndexOf(' '); leftLength = lastSpaceIndex === -1 ? leftLength : lastSpaceIndex+1 ; cutWords = curText.substr(leftLength, curText.length - 1); validLeftLength = leftLength > 0 && cutWords !== " "; } if (validLeftLength) { var leftRenderer = null; if( fontNameOrFontDef instanceof cc.FontDefinition) { leftRenderer = new cc.LabelTTF(leftWords.substr(0, leftLength), fontNameOrFontDef); leftRenderer.setOpacity(fontNameOrFontDef.fillStyle.a); //TODO: Verify that might not be needed... }else{ leftRenderer = new cc.LabelTTF(leftWords.substr(0, leftLength), fontNameOrFontDef, fontSize); leftRenderer.setColor(color); leftRenderer.setOpacity(color.a); } this._pushToContainer(leftRenderer); } this._addNewLine(); this._handleTextRenderer(cutWords, fontNameOrFontDef, fontSize, color); } else { if( fontNameOrFontDef instanceof cc.FontDefinition) { textRenderer.setOpacity(fontNameOrFontDef.fillStyle.a); //TODO: Verify that might not be needed... }else { textRenderer.setColor(color); textRenderer.setOpacity(color.a); } this._pushToContainer(textRenderer); }},
阅读全文
0 0
- cocos 3.10 ccui.RichText修改计算行宽的计算方法
- cocos-html 3.10 修改ccui.Text, ccui.RichText行间距
- cocos js控件ccui.Text 和ccui.RichText获得实际大小的方法
- cocos2d-js ccui.RichText的一点总结
- 关于richText的问题
- RichText
- RichText
- SGI 计算幂次方的精简计算方法
- 合同计算问题的计算公式与计算方法
- 写Richtext的内容成功
- 升级到cocos2d-x 3.10之后被遗忘的ccui.PageView.pageTurningEvent()
- cocos2d-x中ccui.checkbox的使用方法
- cocos js 踩坑旅程 之ccui.Button 那点事
- MDX常见计算方法(百分比/分配/平均值/基于时间的计算)
- MDX常见计算方法(百分比/分配/平均值/基于时间的计算)
- 计算方法之改进的欧拉法计算常微分方程
- java日期计算工具类【包含常用的日期计算方法】
- 补课之web并发数的计算方法及计算公式
- ubuntu下的jdk+eclipse安装
- [LeetCode] 143. Reorder List
- java 字符流相关的io操作原理分析
- 蓝桥杯_法训练—操作格子(线段树点更新与区间查询)
- PHP 5.3.0以上推荐使用mysqlnd驱动
- cocos 3.10 ccui.RichText修改计算行宽的计算方法
- tensorflow/tf.set_random_seed()
- 前向分步算法
- CI框架学习之--隐藏入口文件-index.php
- ajax的封装
- 关于深度学习中Dropout的理解
- 【转】Hexo的Next主题配置
- Kotlin-35.反射(Reflection)
- jquery对表单的几种简单的操作