Flash平台基本介绍

来源:互联网 发布:塔罗牌准不准知乎 编辑:程序博客网 时间:2024/05/15 23:52

这是我从很多地方的来素材经过整理的最后版本,讲的是flash平台最基础内容

1.ActionScript

ActionScript简称AS,是Flash平台的编程语言。通过AS编写的程序,最终会编译成SWF、SWC文件。SWF就是我们通常所说的Flash动画。但是现在SWF已经不仅仅是动画,而且是RIA的载体。

ActionScript有3个版本,AS1、AS2、AS3。这三个版本之间差别很大,现在最流行的是AS3,只有FlashPlayer9及以上播放器才支持AS3编译的SWF。

2.Flex

因为在开发RIA的时候,需要很多常用的功能,例如控件(Button、ComboBox、List等)、布局(VGroup、VBox等),Adobe就开发了一套官方的框架集来实现这些功能,这套框架集就叫做Flex。

3.Flash

现在Adobe已经把Flash定义为一个平台,包括Flash cs、Flash Builder、AIR、Flash Player以及更多。但通常我们所讲的Flash有两个意思:一个就是我们最常见的Flash动画,也就是那些扩展名为.swf的动画文件,另一个就是Flash cs,Flash动画的制作软件。

4.Flash Builder和Flex Builder

AS发展到3.0之后,语法和Java很像,再加上增强的性能和强类型,可以完全脱离Fla文件,使用纯文本编码。但是Flash cs是一个动画制作工具,虽然可以写一些代码嵌入到动画里面,但使用起来不方便。于是Adobe公司有发布了Flex Builder,一个基于Eclipse的IDE,并发布了Flex SDK。

用Flex Builder可以开发纯AS代码项目。Flex Builder从4.0开始,改名为Flash Builder。

5.Flash cs

Flash cs是Flash动画制作工具软件。制作好的动画以.fla文件保存,经到处后得到.swf文件.

6.Flash Player

(1)独立版和插件版

Flash Player分为独立版和插件版,插件版安装后,让浏览器可以播放swf文件,这也是现在大多数网站的做法。独立版安装后,则可以直接在本地双击swf文件打开一个窗口来播放,无须播放器。

(2)调试版和普通版

通过Adobe更新程序更新的均为普通版,该版适合普通用户。调试版(Debug)在swf发生运行时错误的时候会弹出对话框,而普通版不会。开发人员应该安装调试版。

(3)下载最新的独立版和调试版

访问http://www.adobe.com/support/flashplayer/downloads.html 

ActiveX control content debugger(for IE) 针对IE的调试插件版

Plugin content debugger(for Netspace-compatibel browers) 针对其他浏览器的调试插件版

Projector content debugger 独立调试版

Projector独立普通版

4)如果要下载普通版,则访问http://get.adobe.com/flashplayer,该地址会根据浏览器自动下载对应的普通插件版。

5)下载的文件,文件名中带_sa_字样的为独立版播放器,否则为插件版。

文件名中带有_debug字样的为调试版,否则为非调试版。

文件名中带有_ax_字样的是针对IE浏览器的版本。

文件名中带有_plugin字样的针对其他浏览器版本。

6)关于独立Flash Player播放器

如果要播放swf文件,一定不要使用暴风影音、QQ影音。垃圾影音等软件的文件自动那个关联。。。。

正确的做法是:

1. 复制独立调试版Flash Player到你的C:\Program Files文件夹(其他文件夹也行,建议是路径为全英文),双击运行一次,即可与swf文件自动关联(Win7/Vista用户右击,选择以管理员身份运行

2. 没有2,如果你一定要找2,那你就很2.。。。。。。。。。。

7.AIR

Flash Player再强大,也要运行在浏览器中,受浏览器的约束。为了摆脱浏览器,Adobe有发布了RIA。RIA是一个Runtime,可以理解为JVM。有了它,就可以使用AS3开发桌面软件,而且开发出的软件和Java软件一样跨平台运行(一次编译,遍地运行)。例如:新浪微博的AIR客户端

8.SWF SWC SWZ

入门级讲解

(1)SWF

Swf是我们见到的最多的Flash平台文件了。是的,它就是Flash平台的最终表现形式。前面说到的无论是Flex、Flash cs还是纯AS,最终编译出来的文件都是swf格式,浏览器中的Flash Player插件和独立的Flash Player,也只能打开swf文件进行播放。即使AIR,其本质也是运行时+swf而已。

但是并不是所有的swf都可以直接播放。Swf有3种:

1. 程序SWF(application swf):可以直接在Flash Player种运行的swf

2. 库SWF(library swf):swc文件种的library.swf

3. 模块SWF(module swf):Flex Module产生的swf文件

最终用户碰到的大多是“程序swf”,而程序猿碰到后两者的可能性比较大

(2)SWC

SWC是一种库文件,通常用来发布非开源的类。程序猿们将源码编译成SWC文件,并发布API文档,使用者就可以使用这些SWC提供的类库进行自己的开发了。SWC不是运行时共享的,而是在编译的时候直接加入了程序SWF中。最终的SWF可以脱离SWC运行。

SWC本质上是一个Zip文档,其中包含一个library.swf文件和一个用于描述的xml文件,你可以zip管理器打开查看

(3)SWZ

从TLF(Text Layout Framework)出现以来,Flex SDK中多了一个flashx包,这个包中的功能,就是用SWZ实现的。SWZ是在运行时共享的库,你可以将其看做一个可以放在外部的SWC。而且SWZ的共享是平台级的(Module SWF的共享是浏览器级别的),存在与操作系统缓存中(Module SWF存在浏览器缓存中),只要下载过一次SWZ,你的操作系统中所有用到这些SWZ的地方都不用重新下载

程序猿专版

只要做Flex项目,终究有一天会涉及到RSLs,要和swf、swc、swz打交道。

RSLs全称是Runtime Shared Libraries,也就是“库”的意思。它是Adobe Flash平台的二进制模块化技术,目的类似于动态链接库(Dll),但实现的技术细节完全不一样。

(1) swz文件

从flash player 9.0.115以后,Adobe支持的一种RSLs,称之为“signed framework RSLs”。

ADOBE的解释:签名的RSLs(也就是swz)会优先缓存在flash player中,而且可以被任何应用程序访问,即使是和原先程序不同的domain也能。Swz文件只需下载一次,就算是浏览器缓存被清空,swz也可以从disk重新读出。而未签名的RSLs(会以swf形式存在)只能缓存在各个浏览器中,如果浏览器缓存清空,就需要再次下载,而且被限定为只能在Application同一domain内访问。

Adobe将swz文件cache存在PC的固定文件夹下:

Windows 7: C:\Users\${username}\AppData\Roaming\Adobe\Flash Player\AssetCache\

Windows XP: C:\Documents and Settings\${username}\Application Data\Adobe\Flash Player\AssetCache\.

只有Adobe公司自己才能创建swz文件。尽管有人建议开放给合作的第三方,但迄今为止还没有。

Swz文件是一种未知加密(?)文件格式,flash player 内部会对swz文件进行签名认证

(2) swc文件

swc文件和swz、swf文件最大的区别在于:它是用在编译期,而不是运行期。RSLs指的是swf和swz,swc不算是RSLs,它俩之间有间接关系。

在编译时,swc可以被静态链接,也可以被动态链接,这是有编译参数决定的

Swc文件是一个zip格式文件,打开后有两个文件:library.swf和catalog.xml.其中library.swf 和 catalog.xml名字是固定的, catalog.xml是对library.swf的描述.

需要对动态链接的情况作一点说明:只有带有摘要信息的swc文件才能被动态链接,否则运行时会出错,让你重新编译。Swc文件中的catalog.xml中的信息会编译到app.swf中,而app.swf运行时会找原swc中的library.swf文件(需要更名),并且会校验RSL(原library.swf文件)的摘要信息.

如果你遇到过 "Flex Error #1001: Digest mismatch with RSL ..."之类的错误, 这是因为:运行时的rsl swf不是编译时swc中的libray.swf.

如果你只拿到一个test.swc文件, 你需要将这个swc中的library.swf用unzip提取出来, 并且更名为test.swf

大部分同学不用做这个步骤, 是因为Flash Builder已经自动帮我们做过了,  如果你作手动编译, 就需要自己手动做.

(3) swf文件

app swf是指可以直接在flash player中运行的, 而library swf是指swc文件中的library.swf

文件,module swf指Flex Module产生的swf文件

(4) 有关RSL的编译参数

(5) mxmlc和compc是Flex SDK自带的编译命令, 可以用下面的形式来查看其自带的帮助:

(6) #mxmlc -help list advanced details

(7) #compc -help list advanced details

(8) compc默认debugtrue, 所以当用compc编译时, 最终的release版本需要指定 debug 为 false,

(9) 相反mxmlc默认debug是false.

(10) 默认值还需要考虑{FLEX_HOME}/frameworks/flex_config.xml文件, 这个文件配置了很多的默认值.

(11) 因为很多的编译参数都有别名(alias), 所以在网上查找这些资料时, 为了不至于搞糊涂, 可以对应上面的两个命令的help来看.

(12) static-link-runtime-shared-libraries:  是否用动态链接

(13) runtime-shared-library-path: RSL配置, 可以有多个

(14) external-library-path: 编译时不要将指定的swc中的类带入, 可以指定多个

(15) optimize: 编译时是否优化

keep-as3-metadata: 通过指定metadata, 将未指定的metadata的相关代码清除以减少size. 可以指定多个