用C#封装SWF文件格式
想必有些朋友看过一些网络杂志网站提供的杂志制作软件,那些软件可以与Flash交互然后生成Flash的网络杂志或者相册。
我不懂他们怎么做到的,Flash的扩展API不知道有没有提供保存Flash文件中某个MovieClip对象的接口。。。我东看西看好像也没看到,于是我就研究起Flash文件格式来了。
看到网上有一些SWF文件生成或者转换的开源项目,大多都是C++和Java的,唯一看到一个C#的是在另外一个SWF 的C++类库基础上做的,并且使用的是Mono的C#开发。
于是我就想自己封装一个.NET版的SWF类库,这个类库提供生成SWF文件和解析SWF文件的功能。比如在ASP.NET页面上就可以动态的生成Flash文件了,又或者可以使用这个类库自己作一个Flash杂志制作软件,嘿嘿,想得好像美美的。
看看最新的Flash8的文件格式文档,里面罗列了一大堆结构体,数据类型,标签声明等等。我这星期把它们都提取出来分到不同类文件里,发现总共100多个文件,看了我是头晕眼花,当我做完SWF文件头的封装后都不知道该继续封装哪些东西了。
后来看了Script SWF (一个开源的C++项目,它可以通过脚步创建SWF文件)中的SWF文件格式介绍后来了点灵感,我决定根据SWF文件的发展历史来封装我的类库,从1.0版本的SWF文件开始一直封装到最新版。
项目第一期需要封装的tag有:
FileHeader,End,ShowFrame,DefineShape,FreeCharacter,PlaceObject,RemoveObject,DefineBits
DefineButton,JPEGTables,SetBackgroundColor。DefineFont,DefineText ,DoAction,DefineFontInfo
第一期需要封装的基础结构有:
Rect,Tag,Morph_Shape_With_Style,Shape_With_Style,Styles,Shape_Record
Styles_Count,Matrix,Color_Transform,Button,swf_action,Rgb,Shape,Text_Record
注:上面的命名在实现是可能会有所改变
我最近公司项目比较赶所以业余时间不多,一个人做可能要花很长时间。 我希望对这个类库有兴趣的朋友不妨和我联系,可以考虑组一个开源项目团队,大家分工协作完成这个类库的封装。
附录:Alexis' SWF Reference