SWF

义项:Adobe Flash动画文件格式
SWF

SWF是Adobe Flash所使用的文件格式,主要用于在网页中承载矢量图形、位图、音频、视频以及基于ActionScript的交互逻辑[1]。其名称原指Shockwave Flash,后来为避免与Shockwave技术混淆,被解释为Small Web Format[2]。该格式以体积小、加载快著称,曾被广泛用于网页动画、浏览器小游戏和交互式广告[3]。随着Adobe于2020年底停止支持Flash Player,SWF作为网络发布格式已基本退出主流[4]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

SWF是一种面向多媒体、矢量图形和ActionScript脚本的二进制文件格式,最初由FutureWave Software设计,后经Macromedia和Adobe延续维护[5]。该格式的扩展名为.swf,注册的互联网媒体类型为application/x-shockwave-flash[6]。SWF文件通常嵌入HTML页面,由浏览器插件Flash Player读取并渲染,也可打包成可独立运行的可执行文件[3]。

“SWF”最初是Shockwave Flash的缩写,意在借用Macromedia Shockwave品牌的影响力;后来为避免与Shockwave技术混淆,该缩写又被解释为Small Web Format[2]。Adobe并未就该缩写的正式含义作出官方裁定[7]。按英文读音,SWF常被读作“swiff”[3]。

原理

SWF以标签化的二进制流组织数据,每个标签由类型、长度和内容构成,这种设计与QuickTime的原子结构相似,使旧版播放器能够跳过自身不支持的内容而继续解析文件[8]。文件头部标识版本与压缩方式:未压缩文件以FWS开头,采用zlib压缩的以CWS开头,采用LZMA压缩的以ZWS开头[2]。

图形内容的核心是路径,即由直线段和贝塞尔曲线段组成的序列,矩形、椭圆和文字等图元可由路径进一步构造,因此其图形模型与SVG、MPEG-4 BIFS 存在相似之处[9]。播放时,SWF借助显示列表管理舞台上的对象,并允许命名和复用已定义的组件[8]。帧按设定速率依次显示,简单动画依靠时间轴循环播放,交互内容则由ActionScript脚本控制[3]。

坐标在SWF中以整数保存,单位为twip,1 twip 等于 1/20 个逻辑像素;整数采用小端字节序,浮点数自SWF 8起遵循 IEEE 754 标准[8]。自SWF 11起,Flash Player引入名为Stage3D的底层3D接口,通过AGAL着色语言描述图形渲染[8]。

发展历程

该格式源于FutureWave Software为在低带宽环境下播放动画而做的设计,目标是生成体积小、能在任意系统上播放的文件[5]。1996年5月,FutureWave发布FutureSplash Animator;同年12月Macromedia收购该公司,该软件随即成为Macromedia Flash 1.0[9]。

早期SWF仅支持矢量图形与位图,后续版本逐步加入音频、视频等能力[8]。第6版开始提供zlib压缩选项,此前所有SWF文件均为未压缩;第13版又引入LZMA压缩[2]。文件格式随Flash与Adobe AIR的版本更迭频繁修订[2]。

2005年Adobe收购Macromedia,SWF的规范文档改由Adobe发布[3]。2008年5月1日,Adobe在开放屏幕计划框架下放宽了对SWF规范的许可限制;同年7月1日又向Google、Yahoo等搜索引擎提供代码,使其能够抓取和索引SWF内容[9]。

Adobe宣布于2020年12月31日终止Flash Player,并从2021年1月12日起阻止Flash内容在播放器中运行[3]。Wolfram语言自12.2版起不再支持SWF格式[4]。

应用

网页动画是SWF最主要的用途,矢量绘制使其在任意缩放下保持清晰,文件体积也相对可控[1]。浏览器小游戏同样依赖SWF,开发者用ActionScript编写交互逻辑,用户借助浏览器中的Flash插件即可直接运行[5]。此外,该格式也用于在线广告、动画短片以及PDF内嵌动画等场景[1]。

在制作环节,SWF一般由FLA工程文件编译导出,也可通过第三方软件生成[3]。Adobe Flash、Flash Builder、After Effects和Adobe Animate 均可输出SWF;开源工具如Ming库、SWFTools和MTASC编译器同样能够构建此类文件[5]。将SWF与Flash Player运行时打包,可得到在Windows上以exe为扩展名的独立播放程序[3]。

局限

SWF的呈现高度依赖Flash Player插件,内容并非由浏览器原生支持,这使其在移动设备上的可用性受到限制[3]。插件停止分发后,已发布的SWF文件难以在常规网页环境中直接播放,通常需要转换为其他容器格式或借助第三方工具[1]。

SWF是编译后的成品文件,无法直接用Flash编辑,只能取回部分素材,完整还原往往要依赖反编译工具[7]。2008年Adobe放宽规范许可时,Gnash开发团队成员Rob Savoye即指出格式中仍有部分内容未公开,第三方播放器的完整兼容因此存在障碍[9]。随着主流浏览器陆续终止支持Flash,该格式在网页领域已被HTML5等技术取代[1]。

参见

  • Adobe Flash —— SWF格式所属的技术平台与创作环境。

  • ActionScript —— SWF中用于实现交互逻辑的脚本语言。

  • 矢量图形 —— SWF图形模型的基础表达方式。

  • Flash Video —— 可与SWF配合使用的视频容器格式。

  • HTML5 —— 网页动画与交互领域取代Flash的技术标准。

  • SVG —— 与SWF图形原语结构相似的可缩放矢量格式。

参考资料

  1. A Guide to SWF Files | Adobe [引用日期2026-10-29]
  2. Adobe Flash [引用日期2026-10-29]
  3. fdd000130 [引用日期2026-10-29]
  4. SWF—Wolfram Documentation [引用日期2026-10-29]
  5. epfl.ch 上的网页 [引用日期2026-10-29]
  6. SWF (.swf) [引用日期2026-10-29]
  7. SWF [引用日期2026-10-29]
  8. SWF File - Shockwave Flash Movie File Format [引用日期2026-10-29]
  9. SWF [引用日期2026-10-29]
词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:38:20Z

历史版本

本条目引用的词条
矢量图形 Adobe SVG Adobe Flash ActionScript Flash Video HTML5