iloveas 发表于 2018-12-14 15:46:39

【9RIA—iloveas】— AS3游戏实用技巧(18):一行代码修正AIR表情混排的Bug

转载:9RIA游戏开发者社区(天地会)
作者:iloveas(原天地会大神)


总目录:[原创]AS3游戏开发实用技巧汇总



这篇帖子本来不在iloveas的计划之内(毕竟用AIR做网游的朋友不算太多),但既然昨天有朋友在别的帖子里提到了这个问题,那我今天就先来写写。

与之前那篇帖子一样,使用FTE,TLF的大神可以无视,因为本帖讨论的依然是TextField。

使用TextField实现图文混排的时候,大家用得最多的,估计就是getCharBoundaries方法。因为它可以获取一个字符的位置和大小,如果这个字符是空格的话,那就可以通过上述方法来定位表情图片了。

不过在AIR里,这个方法有个Bug,如果你在AIR项目里进行如下的测试:

    var txt:TextField = new TextField();
    txt.text = "abc";
    trace(txt.getCharBoundaries(0));
    addChild(txt);
    trace(txt.getCharBoundaries(0));

就会发现,TextField在addChild前后,getCharBoundaries方法所得到的矩形相差甚远,addChild前的矩形要小得多。

这本来不是什么大问题,因为addChild后的结果依然准确,而且不addChild的情况下获取字符边界的需求也不多见(虽然iloveas在开发应用的时候遇到过),但如果那位朋友真的遇到类似的问题,就可以考虑通过如下的方法进行解决。很简单,在通过getCharBoundaries方法获取到矩形后,追加以下一行代码:
**** Hidden Message *****

得到的矩形区域就准确了。

如果不是这样的问题,那可能是FP11跟FP10(此处针对发布版本)对TextField布局处理的差异所致,不过iloveas还没有具体测试过,所以暂不能给出解决方案。

这是一个很有规律的Bug,iloveas为了找出这个规律,曾经花费了将近半小时的时间,所以我设置了回复可见,希望大家可以抽出半分钟乃至半秒的时间回一下本帖,支持一下iloveas,谢谢大家啦~~


wleen123 发表于 2019-8-23 14:42:47

qiangliezhidgaewrfasdfasdfawe

yunjing 发表于 2020-5-8 11:01:43

感谢大佬学习学习

xchx123 发表于 2021-1-8 12:02:24

图文混排,有时候的确会出问题

SUPERSEIYA 发表于 2021-1-23 18:05:27

学习一下

罗韶 发表于 2023-1-11 15:13:41

来学习表情符号的
页: [1]
查看完整版本: 【9RIA—iloveas】— AS3游戏实用技巧(18):一行代码修正AIR表情混排的Bug

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)