做动态聊天表情显示时候遇到getCharBoundaries()为Null的解决之法

来源:互联网 发布:java webservice框架 编辑:程序博客网 时间:2024/05/22 16:18
在做聊天表情时候,TextField多行自动换行情况下,经常在用getCharBoundaries()获取rectangle时候,在第二行一下会获取到null而导致无法获取字符准确位置。看了一些资料和解决方法,说是加trace后正常;自己测试了下,加了trace只能保证第一次正常,第二次输入多行照样出错,后来又查到和文本高度有关系,于是自己测试后发现解决此问题方法,分享如下:
  1:在使用txt.getCharBoundaries()之前,将文本高度存入变量storeHeight变量中(var storeHeight:Number=txt.height)。
  2:使用txt.getCharBoundaries()之前先让文本高度值为文本的textHeight。
  3:这时候再使用txt.getCharBoundaries()将不会为Null。
  4:再改变文本高度为原来高度。
  code:
      var storeHeight:Number=txt.height;//存储txt本来高度(因为txt高度还包括行距,和txtHeight不等。)
      var phizIDs:Array=[2,3,8......]//此数组为要查找的字符的位置数组
      for(var u:uint=0;u<phizIDs.length;u++)
        {
                txt.height=txt.textHeight;
                trace(txt.getCharBoundaries(phizIDs[u]));
                txt.height=storeHeight;
                
         }
        //连发15个表情trace结果如下:
  (x=2, y=42, w=6, h=15)
(x=26, y=42, w=6, h=15)
(x=50, y=42, w=6, h=15)
(x=74, y=42, w=6, h=15)
(x=98, y=42, w=6, h=15)
(x=122, y=42, w=6, h=15)
(x=146, y=42, w=6, h=15)
(x=2, y=62, w=6, h=15)
(x=26, y=62, w=6, h=15)
(x=50, y=62, w=6, h=15)
(x=74, y=62, w=6, h=15)
(x=98, y=62, w=6, h=15)
(x=122, y=62, w=6, h=15)
(x=146, y=62, w=6, h=15)

(x=2, y=82, w=6, h=15)没有Null存在,多此测试均正常,头疼几天的问题终于解决了。


http://bbs.9ria.com/viewthread.php?tid=62628&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D12

原创粉丝点击