文章目录
  1. 1. 参考网站
  2. 2. 文件格式
  3. 3. 开发框架与工具
  4. 4. flash 反编译
  5. 5. 其它

最近接手的一个项目中前端使用了Flex框架,编译生成flash文件后在浏览器中运行,代码还要继续维护,于是花了些时间研究。 虽然各大浏览器已在2020停止对flash player的支持,但是早些年网上大量的flash动画、游戏,和一些遗留的系统,还是需要flash的运行环境,国外也可以找到继续对flash提供支持的商业软件。

学习研究的主要途径:
(1)先是在网上搜索关于SWF/Flash的网页,还是可以找到不错的blog资源,对相关的技术框架有个大概的了解;
(2)其次在微信读书、京东读书上搜索Flex开发相关的电子书, Flex与html/js还是有相似之处,容易入门;
(3)然后找到flash反编译工具,借助反编译后的代码了解项目中使用框架的原理,查看flex开源代码以便有更深入的理解。

参考网站

Adobe https://helpx.adobe.com/air/archived-docs-download.html
Apache Flex https://flex.apache.org/
flex on githubhttps://github.com/apache/flex-sdk
Apache Royale https://github.com/apache/royale-compiler
Cairngorm https://sourceforge.net/adobe/cairngorm/wiki/GettingStartedWithCairngorm/
Cairngorm 百度百科 https://baike.baidu.com/item/Cairngorm/6331423
tamarin https://www-archive.mozilla.org/projects/tamarin/
tamarin-redux https://hg.mozilla.org/tamarin-redux
Tamarin wiki https://wiki.mozilla.org/Tamarin

Adobe 已经停止维护Flash相关的技术,从官网上只能找到一些archived的技术文档。 Flex主要用于RIA富客户端的开发,Flex SDK是开源的,作为apache基本会下项目进行维护;最后一个版本是Apache Flex SDK 4.16.1, 发布于2017/11/22。其后续项目 Apache Royale继续支持使用ActionScript进行开发,但产出物是JavaScript与HTML。

Cairngorm是adobe 开源的轻量级的]Flex RIA程序开发框架,对开发Flex应用程序应用了一系列的设计模式。

avm2是运行ActionScript字节码的虚拟机,开源后作为mozilla tamarin也是停止维护了。从mozilla的代码仓库中发现了tamarin-redux 项目, 看着像是tamarin 虚拟机的源码。

文件格式

SWF (shock wave flash)即flash动画文件, flash player运行的即是swf文件。
SWC 库文件,使用zip格式压缩,相当于java中的jar,包含library.swf与catalog.xml

swf swc swz RSLs ant https://blog.csdn.net/liujie634/article/details/38580351
swf文件格式解析(一) https://www.cnblogs.com/chenhaib/archive/2012/05/25/2518029.html
SWF 文件分析 https://blog.csdn.net/spring19840513/article/details/6709426
解析swf文件头,获取flash的原始尺寸 https://www.cnblogs.com/kingBook/p/6836455.html
swf文件格式解析(二) https://blog.sina.com.cn/s/blog_6859df370100wtk4.html

开发框架与工具

Flex开发时,在mxml文件中定义界面元素,ActionScript中实现业务逻辑。mxml是xml格式文件,相当于html,而ActionScript与JavsScript类似是EMCAScript标准下实现的脚本语言。mxml+ActionScript的组合,与现在很多开发UI的框架类似, XML中定义界面组件+脚本/代码中实现业务逻辑。
mxmlc是mxml与ActionScript的编译器, mxml文件会转换为ActionScript类,ActionScript编译成ABC字节码,最终打包在SWF文件中。

mxmlc是包含在Flex SDK中,是使用Java代码来实现的。在实践中,代码量比较多,编译完成需要的时间很长。

Flex的官方开发工具是Adobe Flash Builder,也支持使用ant脚本编译。Adobe Flash Builder基于Ecplise实现的,有时也会卡住。现在也有支持VS Code的插件, as3mxml,尝试后可以支持mxml与ActionScript的高亮显示,基本满足日常阅读代码需求,但编译代码还是使用Adobe Flash Builder。

vscode插件 https://github.com/BowlerHatLLC/vscode-as3mxml
Flex Ant自动构建 https://www.cnblogs.com/skynet/archive/2012/03/29/2423720.html
了解Flex SDK系列教程(1.Ant和FlexTask) https://www.cnblogs.com/chenhongyu/p/3282823.html
ActionScript 编译器 https://help.adobe.com/zh_CN/air/build/WSfffb011ac560372f2012b5a4128cca83a39-8000.html

flash 反编译

JPEXS decompiler https://github.com/jindrapetrik/jpexs-decompiler/wiki
flash decompiler https://www.flash-decompiler.com/

其它

关于Flash技术的移植,网上可以找到一些将Flex代码转换为html/js项目, 或者使用js、wasm技术来实现flash player模拟运行环境。

cocos2dx-swf https://github.com/chenee/cocos2dx-swf
Next2D https://github.com/Next2D/player
royale-asjs https://github.com/apache/royale-asjs
harman airsdk https://airsdk.harman.com/
cheerpx-for-flash https://leaningtech.com/cheerpx-for-flash/

文章目录
  1. 1. 参考网站
  2. 2. 文件格式
  3. 3. 开发框架与工具
  4. 4. flash 反编译
  5. 5. 其它