SWF9文件格式规范中文翻译(二)

http://hi.baidu.com/zoujun1314/blog/item/4bf0191329de14dbf6039e46.html

 

字典是定义的角色的存储仓库,给控制型标签使用。字典的创建和使用的流程是这样的:
1、定义型标签定义内容,像形体、字体、位图或者声音。
2、定义型标签给内容分配唯一的角色编号(CharacterID)
3、根据角色编号把内容存储到字典中。
4、控制型标签使用角色编号在字典中检索到内容,并对内容执行相关动作,比如显示一个形体(Shape)或者播放一段声音。

      每一个定义型标签只能指定一个唯一的编号,不允许相同。举一个象征性的例子:第一个角色编号为1,第二个角色编号为2,以此类推。数字0有特殊含义表示一个空的角色。

      并不是只有控制型标签可以引用字典。定义型标签也可以使用字典中已经存在的角色来定义更加复杂的角色。例如:DefineButton 和DefineSprite 标签都是通过其他的角色来定义他们的内容(PS:相当于容器里面放内容)。DefineText标签可以通过字体角色来为文本选择不同的字体。

      下图是一个典型的定义型标签、控制型标签和字典的关系:


SWF文件的处理过程

      Flash Player会处理所有的标签直到遇到ShowFrame 标签。此时,显示列表被复制到屏幕,然后播放器继续处理直到下一帧需要显示。第一帧的内容累计了第一个ShowFrame标签之前所有控制型标签的执行结果,第二帧的内容累计从文件开始到第二个ShowFrame标签的所有控制标签的执行效果,以此类推。

 

文件压缩措施

SWF文件需要在网络上频繁传输,所以自然是越紧凑越好。下面的技巧就是被用来实现现这一点:

 


重用——角色字典的结构可以让非常容易实现这一点。例如,形状、按钮、声音、字体或者位图只在文件中存一次,却能多次引用。

压缩——形状通过一种有效的偏差编码方式来压缩。通常直线开始的坐标被认为是上一条线的终点。距离通常是相对于上一个点来表达的。

默认值——有一些结构,像matrixes和color transform有一些公用字段用的比其他多。比如一个矩阵,最常使用的就是转换。缩放和旋转比较少用。所以,如果缩放没有定义,它默认为100%,如果旋转没有定义,则默认不旋转。通过这种默认值的方式来让文件更小。

变化编码——作为一种规则.SWF文件只存储状态之前的变化。它由Shape数据结构和显示列表中使用的放置-移动-移除模块体现。

Shape数据结构——Shape数据结构使用了一种特别的结构。使形体的大小最小化,同时在屏幕上渲染抗锯齿效果非常有效。

总结

    SWF文件是由一个文件头,和跟在后面的一系列的标签组成。标签有定义型标签和控制型标签两类。定义型标签把对象定义为角色存储在字典里,控制型标签操作这些角色并控制影片的流程。

 

第一章:SWF9的文件格式

本章描述SWF9文件格式规范中的新特性和标签。

ActionScript 3.0
      SWF9引入了新的AS3语言和虚拟机。为了明确一个SWF是否需要用到新的虚拟机,FileAttributes标签加了一个ActionScript3的字段。本章中描述的东西只有在这个ActionScripte3字段为1时有效。
AS3字节码包含在新的DoABC标签中。关于AS3字节码的详细资料可以在Adobe 虚拟机2(AVM2)的概览中找到。(www.adobe.com/go/avm2overview/

ActionScript2字节码
      AS2字节码在AS3的SWF文件中不支持。包括DoAction和DoInitAction标签,以及DefineButton2标签中的Action部分。这些标签中的字节码将被忽略。

类链接(Class linkage)
      很多新的标签已经被添加或修改,用来支持和扩展AS3的类和运行实力之间的链接。SymbolClass标签用来链接SWF文件中的元件(Symbol)和AS3类。SymbolClass是AS3特有的,相当于ExportAssets标签。
PlaceObject3标签现在支持了PlaceFlagHasClassName字段。这个字段表示指定了一个类名,作为对象的类型去放置。同时还支持PlaceFlagHasImage字段。表示将从一个characterID来创建一个位图或者基于一个类名从其他的SWF文件中加载来创建位图。

     DefineEditText 标签现在支持了HasFontClass 字段。表示指定一个类名作为字体类从其他的SWF中加载。

      添加了StartSound2标签用来跟载入的SWF文件的声音一起使用,同时包含了声音类的名称。

二进制数据
      DefineBinaryData标签允许在SWF文件中植入任何二进制数据。DefineBinaryData用来跟SymboleClass标签联合使用。SymbolClass标签能用来将一个DefineBinaryData标签和一个AS3类定义联系起来,这个类必须为ByteArray的子类。当一个类被实例化,他将自动拥有二进制数据源的内容。

文本和字体
      因为各种原因,静态文本域能作为动态文本域导出到SWF。为了确定这样的文本域,DefineEditText标签添加了WasStatic字段。这将允许AS3把这样的文本域作为静态文本来看待。同时为了包含植入在SWF文件中的字体的版本信息添加了DefineFontName标签。

场景支持
      新的DefineSceneAndFrameLableData标签描述了影片剪辑中发现的场景和帧。多场景只支持主时间轴,对于其他的影片剪辑只连通其他帧导出单一的场景。

 

第二章SWF8文件格式

本章介绍SWF8文件规范中的新特性和标签

位图滤镜
      SWF8在运行时引入了丰富的图像效果而不影响文件的大小。新的位图滤镜包括模糊、阴影、发光、导角、渐变发光、渐变导角、颜色矩阵和其他的能应用在显示对象之上的,PlaceObject3标签中FILTERLIST和FILTER记录的效果。

混合模式
      SWF8以后的版本,使用混合模式将显示对象的图片或者图片按钮和下层进行效果合成成为了可能。通过PlaceObject3标签和Button record,可以在正常和透明混合之间任选一种混合模式。

位图缓存
      回放性能能够通过位图缓存来进行优化。通过PlaceObject3标签可以指定一个静态的影片剪辑或者一个按钮原件在运行时作为位图缓存起来。Flash播放器在内部缓存显示对象而不用频繁重新绘制图像,这种方式能够为某些特定需求下的回放性能提供重要的改进方式。

加强轮廓
      DefineShape4和DefineMorphShape2标签中的LINESTYLE2和MORPHLINESTYLE2的记录信息,在以前一版本的SWF文件的基础上允许使用新的接合、端点填充轮廓。当时较早的线型记录只允许圆角结合和圆角端点,而LINESTYLE2和MORPHLINESTYLE2还能支持尖角、斜角接合和方形端点、无端点。同时新的线型也包括了纠正直线和竖线模糊的笔触提示。

加强渐变
      SWF8加强了渐变的控制。FILLSTYLE和新的FOCALGRADIENT记录增加了新的放射渐变类型并允许设置焦点。此外GRADIENT记录现在可以有多达15个控制点,SWF7以前只有8个控制点

高级文本渲染
      DefineFont3,DefineFontAlignZones和CSMTextSettings标签为Flash播放器带来了新的抗锯齿技术。高级文本渲染引擎能够完成高质量的字体渲染,尤其在小字号的时候也能看起来很舒服。

9切片缩放
      DefineScalingGrid标签引入了9切片的概念,允许Sprite和按钮保证完整性的情况下进行更好的局部缩放。

高保真On2 VP6
      SWF6以后,Flash Player8支持就高保真On2 VP6流式格式——一种先进的视频压缩算法。另外,Flash Player8增加了对Alpha通道的支持在视频中能够使用透明效果。

屏幕视频V2流式编码器(Screen Video V2 bitstream codec)
      SWF6支持屏幕视频V2流式格式,它是屏幕视频流式格式(Screen video bitstream format)的扩展,Flash Player8以后的版本支持这种格式。这种格式使用了特殊的技术来减少数据量来描述屏幕内容。

SWF 文件特征和元数据
      从SWF8开始,SWF文件必须用新的FileAttributes标签作为第一个标签。这个标签标识SWF文件自己的特征。

      在SWF8中,FileAttributes标签有两个目的。此标签表明SWF文件中是否包含SymbolClass标签,同时使用像title和description这样的属性来为外部处理进行描述,比如提供给搜索引擎。此外,对于本地播放的SWF文件,FileAttributes指定了Flash Player是本地访问还是网络访问。

ImportAssets2
      SWF8以后的版本ImportAsset2标签替代了ImportAssets标签。具有ImportAssets的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需求可以通过快速配置来开发。AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor 的文件持久化组件,以及一个高吞吐量的可靠事务日志组件。 Google地图JSP标签库 利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值