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

搜索
查看: 2213|回复: 8
上一主题 下一主题

[字符串 & 字符编码 & 字体] 【9RIA—iloveas】— AS3游戏实用技巧(19):一行代码处理嵌入字符缺失的问题

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

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

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

x
本帖最后由 TKCB 于 2019-3-19 09:11 编辑

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


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




游戏画面往往具有很强的设计性,所以游戏里的每个元素都非常讲究,容不得半点马虎,字体自然也不例外。正因如此,由操作系统绘制的设备字体通常都不适合于精致的游戏,因为它们不仅缺乏美观,而且容易受操作系统、浏览器等外部因素的影响。为了让字体适应游戏界面,我们一般都采取嵌入特殊字体的方式。
此时文本将由FlashPlayer进行渲染,可控性较强,理论上是一个完美的解决方案。但很不幸,在天朝,嵌入字体是个很让人蛋疼的问题。对于文字内容未知的情况,字库的大小,你懂的。但这怪不得Adobe,谁让程序不是国人发明的呢~~~

为了减少字库的体积,大家往往会作出一定的取舍,比如游戏面向的用户群是中国大陆的玩家,我们就只嵌入简体中文,以及一些常用的数字和符号。那么问题来了,如果某天,一个名为“鳥屋2015”的朋友注册我们的游戏,那他的名字就会完全显示不出来(哪怕“屋2015”这几个字符已经嵌入),鳥屋2015火滚起来的话,就要告我们地域歧视了。

要解决以上问题,我们可以考虑结合服务端进行动态嵌入,要么请求字体,要么一个字一个swf,但这些方法对于游戏来说可行性并不高,前者加重服务器负担,而后者则因为小文件过多而拖慢服务器运行速度。单独开一个服务器来做这些事情吧,成本又有点高~~~

iloveas觉得,既然“鳥屋2015”这个昵称里面只有第一个字尚未嵌入,那么我们完全可以先把嵌入的部分绘制出来。于是接下来的任务,就是判断哪些字符已经嵌入。这里有两个方法,都是一行代码。

第一种方法较为取巧,它利用了显示方面的一些特性:
游客,如果您要查看本帖隐藏内容请回复

第二种方法则比较科学,因为它深入到字库:
游客,如果您要查看本帖隐藏内容请回复

相比之下,第二种方法更便于后续的处理,运行效率也要高一些。

有了这样的一行代码,我们就可以逐字判断,并且把没有嵌入的部分筛选出来。之后再根据实际情况,使用设备字体代替或者单独加载缺失的字符。

对于设备字体来说,如果我们可以加以改造,使其跟游戏画面更加吻合的话,那就真的太完美了。所以,iloveas研发了一款适用于Q版,卡通风格游戏的Q版雅黑,应用到《看你有多溅》、《High歌溅舞》等休闲游戏中,效果也相当不错。

当然了,制作这样的字体需要对位图算法和图像处理技巧有一定的了解(设备字体提供到FlashPlayer以后就是位图的形式)。而所有的这些,都可以在iloveas即将出版的《点睛:ActionScript3.0游戏互动编程》一书中找到答案,敬请期待!!



发表于 2019-1-24 15:23:44 | 显示全部楼层
来学习下实用的技术
回复

使用道具 举报

发表于 2019-1-24 18:03:10 | 显示全部楼层
学习了,谢谢
回复

使用道具 举报

发表于 2019-1-28 10:08:32 | 显示全部楼层
学到了,感谢!!
回复

使用道具 举报

发表于 2019-5-22 08:56:31 | 显示全部楼层
学习学习              
回复

使用道具 举报

发表于 2020-3-5 18:44:58 | 显示全部楼层
学习了,谢谢
回复

使用道具 举报

发表于 2020-8-4 09:56:45 | 显示全部楼层
這個是很好的例子,學習一下。
回复

使用道具 举报

发表于 2020-10-10 08:50:04 | 显示全部楼层
字体确实是一个比较蛋疼的问题
回复

使用道具 举报

发表于 2023-4-19 15:43:52 | 显示全部楼层
学习一下
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /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)



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