关于RichTextField2.0表情显示错乱的问题!
2016-06-20 00:00
183 查看
flex4.5和4.6在textField.getCharBoundaries()这个方法的返回结果上是不一样的。
getCharBoundaries()方法只会返回被渲染出来的文字的边框信息,也就是说,如果文本框大小比真正的文本大小要小,那么你想要打印出没有显示的文字的边框信息是不可能的!
在4.5中,打印出的边框信息是相对于textfield的textHeight属性,而4.6打印出的边框信息是相对于textfield的height属性。这就造成了richtextfield表情显示上的混乱!
解决方法:
private function renderSprite(sprite:DisplayObject, index:int):void
{
var rect:Rectangle = textRenderer.getCharBoundaries(index);
if (rect != null)
{
sprite.x = (rect.x + (rect.width - sprite.width) * 0.5 + 0.5) >> 0;
var y:Number = (rect.height - sprite.height) * 0.5;
var lineMetrics:TextLineMetrics = textRenderer.getLineMetrics(textRenderer.getLineIndexOfChar(index));
//make sure the sprite's y is not smaller than the ascent of line metrics
if (y + sprite.height < lineMetrics.ascent) y = lineMetrics.ascent - sprite.height;
sprite.y = (rect.y + y + 0.5) >> 0;
//flex sdk 4.6添加,否则有显示bug
sprite.y += -_spriteContainer.y;
_spriteContainer.addChild(sprite);
}
}
解决方法二: 封装包里的 SpriteRenderer类 把_spriteContainer.y = -textRenderer.scrollHeight; 把这个注释就好了...
getCharBoundaries()方法只会返回被渲染出来的文字的边框信息,也就是说,如果文本框大小比真正的文本大小要小,那么你想要打印出没有显示的文字的边框信息是不可能的!
在4.5中,打印出的边框信息是相对于textfield的textHeight属性,而4.6打印出的边框信息是相对于textfield的height属性。这就造成了richtextfield表情显示上的混乱!
解决方法:
private function renderSprite(sprite:DisplayObject, index:int):void
{
var rect:Rectangle = textRenderer.getCharBoundaries(index);
if (rect != null)
{
sprite.x = (rect.x + (rect.width - sprite.width) * 0.5 + 0.5) >> 0;
var y:Number = (rect.height - sprite.height) * 0.5;
var lineMetrics:TextLineMetrics = textRenderer.getLineMetrics(textRenderer.getLineIndexOfChar(index));
//make sure the sprite's y is not smaller than the ascent of line metrics
if (y + sprite.height < lineMetrics.ascent) y = lineMetrics.ascent - sprite.height;
sprite.y = (rect.y + y + 0.5) >> 0;
//flex sdk 4.6添加,否则有显示bug
sprite.y += -_spriteContainer.y;
_spriteContainer.addChild(sprite);
}
}
解决方法二: 封装包里的 SpriteRenderer类 把_spriteContainer.y = -textRenderer.scrollHeight; 把这个注释就好了...
相关文章推荐
- 游戏版本比较的算法[ZZ]
- DirectX 图形接口指南
- 点绛唇
- DXUT框架剖析(5)
- 测试Windows Live Writer
- Direct3D中的绘制(5)
- 奇迹世界服务器架构(2)
- 第一章 略说中医的学习与研究(4)
- OGame的建筑说明
- 珊瑚虫版QQ被判侵犯腾讯著作权 可能停止更新
- 第一章 略说中医的学习与研究(4)
- #pragma 用法
- D3D中的粒子系统(1)
- Ubuntu 10.4的wubi安装BUG修正了
- gamebryo release 与 ship 区别
- 非言语沟通技巧
- 微软研究院Detour开发包之API拦截技术
- 3D数学 ---- 矩阵的更多知识(1)
- Adobe Flash player 10 提示:Error#2044:未处理的IOErrorEvent. text=Error#2036:加载未完成 的解决方法
- D3D中的粒子系统(4)