娱乐新地带论坛  

返回   娱乐新地带论坛 > 电脑技术 > 『程序设计』

『程序设计』 不太懂编程,主要用来搜集例子,源码等...

发表新主题 回复
 
主题工具 显示模式
旧 2009-11-03, 03:56 PM   #1
No1
Tony
坛主
级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时
 
Tony 的头像
 
注册日期: 2003-10-22
帖子: 11,053
积分:6
精华:24
现金:14348金币
资产:29325305金币
Tony 是一位成功的新星Tony 是一位成功的新星Tony 是一位成功的新星Tony 是一位成功的新星
【转帖】flash+xml模板动态文本添加修改中文学习笔记

网上有很多优秀的flash+XML网站系统,代码写得异常玄妙,但最大的可惜就是不能直接使用中文。网上在百度上可以搜索到很多关于如何添加中文的做法,我就不再重复了,基本办法就是说:修改XML文件中encoding为encoding="utf-8",flash的fla源文件中动态文本框的字体为中文字体。有的index.htm里面的首行可能还有xml:lang="en" lang="en"也要改成xml:lang="zh-CN" lang="zh-CN" 。

基本上很简单,但要注意的是:动态文本一般都嵌套在影片剪辑中,甚至有的这种影片剪辑根本不在场景中出现,仅是靠AS脚本调用。所以大家要仔细寻找自己需要的动态文本和输入文本。

然而,仅仅修改成这样,其实根本不行,以上方法只能做到让静态文本可以显示中文。然而对于动态文本和输入文本根本就还是不能显示中文,这是为什么呢?

我花了差不多一个下午的时间终于搞清楚了,学习了解到了flash文字嵌入的做法。这里介绍一片很不错的文章,链接如下:http://hi.baidu.com/xneter/blog/item...9304e15eb.html

问题就出现在flash的一个最大优点上。引用上面这篇文章中的一段话:

——————————————————————————————————

flash完全没有以上的任何问题,当你输入任何字体(包括系统字体)在导出成SWF格式的时候会自动转换成图形,就是说在任何平台显示效果都是一样的,无论他安装没有安装这种字体。而且要修改的时候跟修改任何文本文档一样的简便。随着字数的增加,最终swf的文件也会越大。不过这种增大对于在HTML中嵌套字体所需要的动辄几M的体积相比是算不了什么的。并且与平台和显示器无关。

不过flash的特点以及优势就是小巧,多增加一个字就增加几百字节的大小,这对于flash来说也是不能忍受的。所以flash提供了更多的功能让swf文件更小巧。下面我将详细讲述flash关于字体元件与字符嵌入等功能的优点,缺点以及适用范围。

先说flash中“使用设备字体”的功能,此功能在文本属性里。只对静态文本有效,前面已经说了,输入的任何文本都会被flash自动转换为图片,这样的好处是任何平台任何浏览器显示效果都一致,缺点是每增加一个字都会增加最终swf文件的大小。如果你输入一段文本,然后在属性里选择了使用设备字体。那么flash就不会把你输入的字体转换成图形,这样无论你写多少字对swf大小的影响都不大。但是当别人打开这个swf文件的时候会首先检查系统里是否有你所输入的字体,如果有则显示你当初输入的字体。这样看起来就跟你在本地机器上编辑的效果一样。但是一旦浏览者的机器上不具备你当初输入的字体,那么swf将用浏览者所使用的系统上的默认字体来显示,至于效果嘛。。。听天由命吧。这样的做法适合那种一般情况下浏览者系统里都具备的字体,即使万一浏览者里没有这种字体也能显示出字来。只不过效果无法预测而已。
————————————————————————————————————

这段文字说明flash静态文本会将flash中出现的字和字体都保留,在别人的电脑上依然保持原状显示。然而,这样的机制,导致了动态文本和输入文本必须使用文字嵌入导入所需的文字编码才可以随意添加动态文本和输入文本,于是问题就出现了:

英文字符由于字母数量很少,所以嵌入英文拉丁文等字符编码尽会增加swf几十K大小。然而,如果我们要添加中文字符编码,就会给swf增加很多,一个几十K的swf,如果嵌入中文字符编码,就会立即变成8M甚至10M以上,这样的swf根本不能作为网站的页面,会把人等死的,没几个人能够有这样的耐心看一个页面要等上10分钟下载一个页面的。

怎么办呢?难道没办法了?flash+XML网站仅适用于懂英文的人?中文靠边站无缘使用这样的炫酷网站??

当然不是,否则我还写这篇学习笔记干屁呢?

我们可以先用一个取巧的方式,我查了一下,简体中文差不多一万多个字,然而我上网查了一下,平时中文常用文字仅有不到1600个汉字。我想既然flash嵌入文字中可以嵌入整套字符集的同时还可以补充特定字符,那么我就把1600个常用汉字当成特殊字符一次性添加进去,这样,swf最有会能有多大的变化呢?

经过我的几次试验发现:一个原来80K的swf文件,当在其中的一个动态文本中嵌入英文字符集和1600个汉字外加10几个中文标点符号之后,整个swf文件中的其他动态文本就可以使用中文了!再来看看大小:如果动态文本的字体选择宋体并且不选择消除锯齿,文件大小变为280K左右,如果选择任何一种消除锯齿(这里我建议选择“可读性消除锯齿”效果好一点),swf文件的大小将变成440K左右,这样的大小在宽带时代已经不算什么了,基本上解决了flash+XML中动态文本中添加中文导致swf文件大小暴涨的问题。

最后附上一份简体中文汉字1600常用字:http://liujinti.cn/files/jiantizhongwen1600.doc

其实以上的办法还并不是很优秀的,因为一个flash+XML网站可能是由几十个swf文件集成的,如果每一个文件都从几十K变成400多K那么也不是很好的。当然这在现在的带宽下,分批的下载几十颗几百K文件在速度上也并不会感觉什么,只不过作为小有成就感的我还愿意再试验一下,引用刚才那篇文章的后半段:

————————————————————————

接下来说字体元件,使用字体元件的方法是按F11打开库,鼠标左键点库文件名右边的按钮,会出现一个菜单,选择新建字型。这时候会弹出一个字型的属性框,进行设置。名称要起有意义的名称不要起字体的名称,比如”标题文字“。然后你将要用到的字体,这里要注意的是锯齿选项(下面会提到)选择好了后你可以看到在字体选择中多了一项以新建的字体文件名称为名称的字体。因为我们开始建立的字体元件名称叫标题文字,所以在这里是叫”标题文字*“选择使用这种字体,选择好了后你可以使用两种方式来好好的利用这个功能。

1直接放在flash文件里,这样做并不会对flash文件大小有影响,就跟普通的flash文件一样,flash默认会将字体转换成图形,你也可以设置成为系统字体。一切照旧,唯一的区别是当你更换字体的时候可以直接更换字体元件。比如你所有的文字本来都是宋体,可是后来觉得换成黑体更好看,你就可以直接更改字体元件的属性(更改的办法是打开库,选择字体元件点鼠标右键,选择属性)由宋体改成黑体。这样一来所有使用字体元件的文字全部改成黑体(想想如果你没有使用这种功能,修改起来会多痛苦)。

2 第一步跟方法一一样,全部弄完后,选择字体元件,选择链接。(打开库,选择字体元件点鼠标右键,选择链接)选择”为运行时共享导入“ URL里填写以后你将要使用的一个swf文件路径可以使用相对也可以使用绝对路径(如果在同一文件夹下可以写成"字体.swf")标识符就直接使用字体元件的名称

第二步,跟方法一一样,只不过是专门建立一个只有字体元件的swf文件。选择链接(打开库,选择字体元件点鼠标右键,选择链接),选择”为运行时共享导出“ URL里填写在上一步里写好的路径。(上一步写的是"字体.swf")标识符也跟上一步时的字体元件名称一致。然后导出成swf文件。你会发现文件比较大(如果当初选择了锯齿文字会增加这个swf字体库文件的大小(什么情况下使用锯齿请参看本BLOG相关文章))。不过大点没什么关系,这个仅仅是一个引用的文件,就好象把字体都放在这里面当方法一建立的文件有需要的时候再从这里面找。这样的话要什么取什么,方法一建立的文件的大小会非常小,小到难以置信的地步。哈哈不错的东西。而且象第一部建立的文件想改变字体什么的也只需要改变方法二建立的文件的字体元件属性。这就好比第一步建立的swf文件是第二步建立的swf文件的快捷方式一样。只是第二步建立的swf文件的引用,实际的东西都在第二步建立的swf文件里装着呢。

flash中字体元件在一个swf里可以引用多个。就是说你的swf作品里可以使用多种字体元件引用外部的不同的字体元件包。但是一个“被引用“的swf字体文件包里,只能存放一种字体然后打包。否则会出现错误。

————————————————————————————————

根据上段文字的描述,我们可以为一个flash+XML网站做一个包含1600个常用汉字的文本元件的swf,然后所有需要使用中文的动态文本和输入文本都用连接的方式连接这个文件,这样,一个网站一共就仅仅增加几百K了!当然如果你的网站中既用了微软雅黑做导航栏,又用宋体做了正文,那么就多做几个这样包含1600个常用汉字的文本元件的swf。需要那个就链接那个,当然尽量不要让一个swf文件链接好几个这样的字体包,不然页面打开的速度还是会被影响的。

—————————————————————————————————————

最后附上那篇对我帮助非常大的文章的原文:

http://hi.baidu.com/xneter/blog/item...9304e15eb.html

[Flash]用flash字体元件与字符嵌入来使用非系统默认的字体
2007年12月09日 星期日 下午 06:14


flash能够使用各种各样的字体,而传统的HTML要使用各种各样非系统默认的字体只有两种办法,一是将特殊字体嵌入到浏览器中,可惜这一功能不仅仅体积巨大而且并不是对于所有浏览器都适用。(英文字体倒只有百来K但是中文字体起码都1M以上)这样的办法对于中文来说显然是不现实的。

二是将所用到特殊字体的地方都做成图片,这样的好处是任何平台浏览器显示效果都是一致的。但是缺点也是明显的,首先修改不容易,即使是最细微的修改也需要用专门的图形编辑软件来修改,很是麻烦。而且不可能用太多的字体,那样图片会极其巨大甚至比嵌入字体所需要的体积还大。

flash完全没有以上的任何问题,当你输入任何字体(包括系统字体)在导出成SWF格式的时候会自动转换成图形,就是说在任何平台显示效果都是一样的,无论他安装没有安装这种字体。而且要修改的时候跟修改任何文本文档一样的简便。随着字数的增加,最终swf的文件也会越大。不过这种增大对于在HTML中嵌套字体所需要的动辄几M的体积相比是算不了什么的。并且与平台和显示器无关。

不过flash的特点以及优势就是小巧,多增加一个字就增加几百字节的大小,这对于flash来说也是不能忍受的。所以flash提供了更多的功能让swf文件更小巧。下面我将详细讲述flash关于字体元件与字符嵌入等功能的优点,缺点以及适用范围。

先说flash中“使用设备字体”的功能,此功能在文本属性里。只对静态文本有效,前面已经说了,输入的任何文本都会被flash自动转换为图片,这样的好处是任何平台任何浏览器显示效果都一致,缺点是每增加一个字都会增加最终swf文件的大小。如果你输入一段文本,然后在属性里选择了使用设备字体。那么flash就不会把你输入的字体转换成图形,这样无论你写多少字对swf大小的影响都不大。但是当别人打开这个swf文件的时候会首先检查系统里是否有你所输入的字体,如果有则显示你当初输入的字体。这样看起来就跟你在本地机器上编辑的效果一样。但是一旦浏览者的机器上不具备你当初输入的字体,那么swf将用浏览者所使用的系统上的默认字体来显示,至于效果嘛。。。听天由命吧。这样的做法适合那种一般情况下浏览者系统里都具备的字体,即使万一浏览者里没有这种字体也能显示出字来。只不过效果无法预测而已。

现在说说动态文本中的字符嵌入功能,将文本设定成动态文本或者输入文本就会出现字符嵌入这一功能。这一功能的作用是将所选择的字符装载到swf文件中,这样动态的字符加载进去或者输入字符的时候就会变成你当初嵌入的字体。比如你当初输入了一句话使用简体黑体写的,点其属性选择嵌入字符,选择指定范围里面有很多种语言,选择你输入的字所属于的语言种类——在这里是简体中文,点确定。这样就等于你把整套简体黑体嵌入到了flash文件里,当加载动态文字的时候这个地方显示的就是黑体。这样会使最终的swf文件增加1M多(具体大小根据字体的大小来决定,所以英文肯定比中文要小的多)。经过测试嵌套进去的字体对静态文本一样有效。比如这里嵌套进去了简体黑体,所以你输入大量的静态的简体黑体后倒出的swf文件只增加了几百字节而已。(不需要选择设备字体)

如果你输入的是简体却选择嵌入繁体,那么凡是跟简体不相同写法的繁体字是不会显示的,只有更简体写法一致的繁体才会显示。嵌入字符还有一个选项是自动填充。他会自动的把你所写的字嵌入进去,只嵌入这几个字,这样最终文件大小也会小很多。这样做的缺点是,比如你当初输入的是“你是笨蛋”,然后选择自动填充,自动填充的左边就会显示“你是笨蛋”,当然这里你也可以自己添加或者删除文字,比如删除“笨蛋”这样就是剩下“你是‘,最后选择确定。这样你只把确定两个字嵌入到了flash里。你当初创建的”你是笨蛋“只会显示”你是“其他任何字符都不会显示了。如果是输入文本也只能输入”你是“,输入其他字符是无效的。

接下来说字体元件,使用字体元件的方法是按F11打开库,鼠标左键点库文件名右边的按钮,会出现一个菜单,选择新建字型。这时候会弹出一个字型的属性框,进行设置。名称要起有意义的名称不要起字体的名称,比如”标题文字“。然后你将要用到的字体,这里要注意的是锯齿选项(下面会提到)选择好了后你可以看到在字体选择中多了一项以新建的字体文件名称为名称的字体。因为我们开始建立的字体元件名称叫标题文字,所以在这里是叫”标题文字*“选择使用这种字体,选择好了后你可以使用两种方式来好好的利用这个功能。

1直接放在flash文件里,这样做并不会对flash文件大小有影响,就跟普通的flash文件一样,flash默认会将字体转换成图形,你也可以设置成为系统字体。一切照旧,唯一的区别是当你更换字体的时候可以直接更换字体元件。比如你所有的文字本来都是宋体,可是后来觉得换成黑体更好看,你就可以直接更改字体元件的属性(更改的办法是打开库,选择字体元件点鼠标右键,选择属性)由宋体改成黑体。这样一来所有使用字体元件的文字全部改成黑体(想想如果你没有使用这种功能,修改起来会多痛苦)。

2 第一步跟方法一一样,全部弄完后,选择字体元件,选择链接。(打开库,选择字体元件点鼠标右键,选择链接)选择”为运行时共享导入“ URL里填写以后你将要使用的一个swf文件路径可以使用相对也可以使用绝对路径(如果在同一文件夹下可以写成"字体.swf")标识符就直接使用字体元件的名称

第二步,跟方法一一样,只不过是专门建立一个只有字体元件的swf文件。选择链接(打开库,选择字体元件点鼠标右键,选择链接),选择”为运行时共享导出“ URL里填写在上一步里写好的路径。(上一步写的是"字体.swf")标识符也跟上一步时的字体元件名称一致。然后导出成swf文件。你会发现文件比较大(如果当初选择了锯齿文字会增加这个swf字体库文件的大小(什么情况下使用锯齿请参看本BLOG相关文章))。不过大点没什么关系,这个仅仅是一个引用的文件,就好象把字体都放在这里面当方法一建立的文件有需要的时候再从这里面找。这样的话要什么取什么,方法一建立的文件的大小会非常小,小到难以置信的地步。哈哈不错的东西。而且象第一部建立的文件想改变字体什么的也只需要改变方法二建立的文件的字体元件属性。这就好比第一步建立的swf文件是第二步建立的swf文件的快捷方式一样。只是第二步建立的swf文件的引用,实际的东西都在第二步建立的swf文件里装着呢。

flash中字体元件在一个swf里可以引用多个。就是说你的swf作品里可以使用多种字体元件引用外部的不同的字体元件包。但是一个“被引用“的swf字体文件包里,只能存放一种字体然后打包。否则会出现错误。
Tony 当前离线  
回复时引用此帖
旧 2010-01-14, 10:10 PM   #2
No
xixistudio
游客
 
帖子: n/a
现金:金币
资产:0金币
声望:


 
回复时引用此帖
发表新主题 回复

书签


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转


所有时间均为北京时间。现在的时间是 05:01 PM


©2003-2024 1819.net All rights reserved.