看了网上那么多扯淡的FLASH中英文字体嵌入的方法,真是非常火大,大部分都是一些对FLASH特性不熟悉的人写的,或是直接照搬老外的做法,要知道老外只有26个字母,中文(基础字库)可是有成千上万个呢,所以~~~不要再看那些所谓的AS3高手的狗屁方法了,中国人还是要有自己的特殊包字库法—新点心的真·FLASH字库绑定法!
【效果】
http://image.solongbus.com/solongbus/200901/Sample.swf
先说下应用领域一般遇到需要嵌入字体的情况,无外乎以下2种:
1、需要用到美观的界面文字,用程序大量生成或是需要经常更新的
2、需要用到旋转、缩放、渐变等效果
以往的做法是在编译的时候直接嵌入字库,Flex里可以在嵌入的时候选择字符编码范围,比较麻烦,Flash IDE里只能整个字库,中文字库都是以兆为单位的,整个嵌入明显不切实际,下面举个例子:
以微软雅黑为例,每嵌入100个不重复的字,大约只增加20k的体积,足以应付大多应用,而如果嵌入整个微软雅黑的字库,生成的swf文件则达到了3.9Mb
下面开始说重话:网上大部分”AS高手“的文章都是用的这些搓方法,还吸引了N多点击量,误导了无数人。
【原理】
言归正传,说回我的自定义字库方法的原理:
利用Flash IDE中手工创建的TextField上的嵌入指定字库来减小嵌入字库的体积,然后用帧脚本配合绑定类来生成TextField,再直接返回给调用者。
【缺陷】
这种方法可以使文件体积和文字效果得到两全,不过也有一些缺陷:
1、在输入文本的状态下,用程序直接控制文本,会导致输入文本焦点永远丢失。
2、无法在已生成的TextField上绑定字库
【字库创建步骤】
以下配图以FLASH CS3中文版为例,CS4的操作基本相同,只是界面位置有细微区别
1、新建一个.fla
2、如下图,在场景里新建一个动态文本,选择需要嵌入的字体并输入需要嵌入的文字即可,字体大小、颜色、对齐之类的参数都不用理会
3、如下图,点击属性面板最右侧的“嵌入”
4、弹出一个窗口,点击“自动填充”,就可以把刚在在文本框内输入的文字自动嵌入。当然你也可以直接选择窗口上提供的其他字符加载,比如大写、小写、数字都是比较常用的。
5、如果需要嵌入种字体,则只需要重复步骤2~4,创建多个动态文本即可。
6、按Ctrl+F8新建一个影片剪辑,更改“类”为自己喜欢的名称(后面加载代码中的getDefinition会需要这个名字),更改“基类”为bm.view.font.FontLib。确认本文提供的类放在与这个fla同级目录下,即可点击“确认”按钮了。
7、按ctrl+enter,即会生成一个嵌入了指定文字的字库swf了。
8、调用方法参见下文提供的范例代码。
【范例和源码】
最后放上范例和源码(FLASH IDE和Flex都可以跑,带一个TextField修饰类),希望能给需要的人带来帮助
namipan下载
http://www.namipan.com/d/fontLibSample.rar/150564cf8f47a31f5af0d1b7641a792f2e38310fb9f00000
.