在Flex或纯AcitonScript项目中使用Flash组件

2014-03-10更新:更新FlashCC自带的组件;
2010-12-19更新包含Alert、MenuBar等更多组件的Flash组件
2011-08-21更新:加入Flash CS 5.5 的UI组件编译的SWC,原因见正文。

在纯AS环境下做开发的时候,往往需要一些简单的UI组件支持,例如按钮、复选框等等。这时候就需要选择或者自行开发一套常用的UI组件库,我在Flash&Flex大全中介绍了一些可以用于纯AS环境开发的第三方组件库,但一直没有介绍Flash的组件。现在看来,在纯AS项目中使用Flash的组件,至少有以下三个好处:

1. 有[完善的中文文档](http://help.adobe.com/zh_CN/Flash/CS5/AS3LR/index.html); 2. 有大量参考资料; 3. 有丰富的免费皮肤; 4. 生成的文件较小,只有使用了的组件才会被导出。

至于Flex,它已经有了完善且更加高级的组件库,而且也包含上面1-3条优点,所以采用Flex框架开发,当然还是用Flex组件比较好。这里只是提供一种方法罢了。

Flash组件位于安装目录下的“Common\Configuration\Components\”目录中(Flash CS3则在“zh_cn\Configuration\Components\“)。其中“User Interface.fla”为源文件,只需要用Flash打开这个文件,在发布设置中选中“导出SWC”然后导出,就可以得到一个119KB的SWC文件。将其复制到AS项目的“libs”文件夹即可,也可以直接在Flash Builder中的AS项目的属性中设置“Actionscript构建路径-库路径-添加SWC文件夹/添加SWC“。

Flash CS3/CS4/CS5所带的UI组件是完全一样的。UI组件的源码在“User Interface.fla”的库面板中的“Component Assets/_private/ComponentShim”中,这是一个编译剪辑,因此看不到源码。它们的真实源码在“Common\Configuration\Component Source\ActionScript 3.0\User Interface\”文件夹中,完全由AS3写成。

从CS5开始,由于增加了新的FTE文本引擎和TLF框架,Flash也提供了一个TLFTextField组件。相应的,UIScrollBar.scrollTarget也发生了改变。原来的类型是TextField,现在可以接受TextField和FTETextField。因此,原来提供的SWC中的UIScrollBar组件就不能支持FTETextField。因此这里提供了Flash CS 5.5版本的UI组件。

FlashCS3提供的UI组件编译的SWC下载(不支持FTETextField):

1 文件

FlashCS5.5提供的UI组件编译的SWC下载(支持FTETextField):

1 文件

在纯AS3项目中使用,还需要这个SWC提供FTETextField支持:

1 文件

2014-03-10 更新:

Raymond 同学使用 FlashCC 编译了 几个SWC,放在这里提供给有需要的朋友:
  1. FlashUI_CC.swc 来自于 xxx\Adobe\Adobe FlashCC\Common\Configuration\Components 目录下的User Interface.fla ,发布目标 是FlashPlayer10.3;
  2. Video 来自于同一个目录路径的Video.fla ,同样的发布参数;
  3. tlfRuntime_cc.swc 和 textLayout.swc 来自于 xxx\Adobe\Adobe FlashCC\Common\Configuration\TLFConversion 目录下 Adobe 已经编译好的SWC文件。用于Text Layout Framework支持。
1 文件