您的位置:首页 > 其它

动态文本可以华丽到什么程度?

2007-12-11 00:17 218 查看
动态文本可以华丽到什么程度?

首先咒骂"马可肉米迪亚"和"砖头"的那帮人一下,因为AS2有个BUG是用AS给文本设置中文字体无效.

(你不信?不信自己去试!我说的可是动态文本哦.而且让人抓狂的事是文本框里面放点中英文混合的文本,用AS把字体去设置成表示黑体系的'_sans',结果竟然是英文字符变成了黑体,而中文字符仍然是默认的宋体!)换句话说你压根别想让你用AS编写的文本框里出现除了宋体之外的字体! 而且更令人气愤的是这个BUG一直保留到了AS3!本来这个效果用黑体演示最好,宋体的笔画太细不适合用这个效果,但是就因为这个BUG搞的我没办法用不成宋体就给你们用黑体英文演示了,想看中文效果的同学也可以直接去编辑这个文本.

实在不行只能放弃纯AS,用FLASH做.(其实还有个FLASH辅助FLEX解决的办法可以尝试但是太繁琐)

不提这茬了,看下面的SWF吧.

你不信这是动态文本?跟你说了可以让你自己编辑的么(就是光标看不到,你稍微将就一下吧呵呵)

恼人的咱不说了,说高兴的----这就是RIA比之HTML/AJAX的超越之处----这样的特效HTML根本想都别想,更不要说是可以编辑的动态文本了.

看上去很华丽么?其实这种效果用AS2就可以做的了,不过貌似偶还未见过有人做这样的动态文本出来.

原理就是用三个加滤镜的动态文本框叠加在一起;最底下一个用挖空内发光的滤镜,做颜色表现,上面再放一个加黑色内斜角滤镜的来表现光影,这个斜角滤镜的角度变化,导致黑色阴影移动,会让人觉得是光影角度的变化,再给上面那个文本框来个白色内发光做反光有玻璃剔透感觉就OK.

这效果还差点什么呢?就差抗锯齿了.

----------------------以下都是闲话--------------------------------

抗锯齿是ADOBE-FLASH技术的老大难问题,按说动态文本只要嵌入了字体文件就可以开启抗锯齿功能了,可是这东西是人家美国人做的,美国人用的英语字体一个一般就几十k,嵌入SWF没人说啥.但中国就不一样了,中国字体小点的一个都是三五MB的,你嵌入?为了让一个几十k的flash能够显示抗锯齿的文本让他体积大几MB?也许几MB对老外的网络速度来说不算什么,但中国的网络速度是决然不行的,恐怕再过3年都不行.虽说文字少的可以选择性嵌入影片所需要的文字,但这其实跟使用静态文本一样必须在编译时确定你要显示那些汉字.这就是落后的坏处----老外哪管你中文字体比英文字体大很多倍呢?

我们明知道FlashPlayer里有抗锯齿的函数,也知道为了让动态文本抗锯齿而嵌入SWF的SIMSUN.TFF("宋体")和所有中文操作系统里带的SIMSUN.TFF是同一个文件,但是FlashPlayer只能从观看SWF的机器上用这个SIMSUN.TFF如同windows记事本那样的显示文字而不能进行抗锯齿的处理.我不觉得让FlashPlayer用播放时使用本地机器的字体文件来抗锯齿有什么技术难题,估计实现的话用不了三五百行代码,但MacroMedia和Adobe的工程师们就是没有写!(也许把字体文件处理成FlashPlayer自己所使用的矢量信息需要的时间很多,再缓冲到缓存里需要的时间开销也不少,但这完全可以用异步方式来解决么).

好在大量的文字出现的时候都不会用较大号字体,而通常的小号字体(12号)根本不需要抗锯齿,抗了反而难看.所以动态文本抗锯齿的问题自从AS2时代开始就一直不断有人提出但最后都无果而终(我去写抗锯齿就是很不爽为什么很久以来都没有能够解决),毕竟对于来自互联网的不断更新的文字来说抗锯齿其实还是有点奢侈的,不要说HTML不能,就连大多数文本编辑软件都不抗锯齿呢.

有句话说得很好:"自己动手,丰衣足食",Adobe连我开篇说的不能设置中文字体的BUG都无法解决,我们还能指望它给咱们解决抗锯齿问题么?于是我自己动手丰衣足食,06年的时候用AS2写了一个"别出心裁地"动态文本抗锯齿算法,虽然早就感觉速度上难以达到要求,但还是本着不撞南墙不死之心勇往直前地去做了.做是做出来了,效果还不错,但速度果然不行.处理一百象素左右大小的一行汉字就要一两秒不止(我的CPU是AMD2400+),于是我对自己说:"撞了南墙了~oh shit".(可怜AS终究只是一种脚本,脚本就意味着很多时候速度无法与开发语言相比)

有这功夫其实我应该去接点活交清学费的.

后来学了AS3之后我发现做调试器更要紧,这一做没想到就没个完了...

另外有一个重要的历史事件就是经典flash版那个巾帼不让须眉的--集美丽与智慧于一身的--多年来热心对菜鸟提供帮助的--无私而又伟大的--现任经典论坛AS3版主的--mirycat大人在2007年春节做出了非常优秀的动态文本抗锯齿解决方案:动态嵌入文本,只是这个方案扔不完美,"对服务器的要求比较高".

前些日子还见了一个某高人在研究AS抗锯齿(和我的算法不同)...

不过ADOBE推出RSL之后也许我们应该将字体放进RSL里来偷懒的解决了....抗锯齿的试验将会尘封在我的硬盘里(直到AS4还不给抗锯齿?).

闲话扯完了,AS将会实现完美抗锯齿还是支持显卡API?二者如果要选一我还是后者吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: