11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2666|回复: 5
上一主题 下一主题

[文本框 & 文本引擎] 【9RIA—iloveas】— AS3游戏实用技巧(18):一行代码修正AIR表情混排的Bug

[复制链接] TA的其它主题
发表于 2018-12-14 15:46:39 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

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


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




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

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

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

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

[Actionscript3] 纯文本查看 复制代码
    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方法获取到矩形后,追加以下一行代码:
游客,如果您要查看本帖隐藏内容请回复


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

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

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


发表于 2019-8-23 14:42:47 | 显示全部楼层
qiangliezhidgaewrfasdfasdfawe
回复

使用道具 举报

发表于 2020-5-8 11:01:43 | 显示全部楼层
感谢大佬学习学习
回复

使用道具 举报

发表于 2021-1-8 12:02:24 | 显示全部楼层
图文混排,有时候的确会出问题
回复

使用道具 举报

发表于 2021-1-23 18:05:27 | 显示全部楼层
学习一下
回复

使用道具 举报

发表于 2023-1-11 15:13:41 | 显示全部楼层
来学习表情符号的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的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)



快速回复 返回顶部 返回列表