加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex编译器参数中-swf-version与-target-player之关系

发布时间:2020-12-15 04:13:54 所属栏目:百科 来源:网络整理
导读:http://zengrong.net/post/1486.htm 本站文章除注明转载外,均为本站原创或者翻译。 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商; 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转
http://zengrong.net/post/1486.htm

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本文标题:Flex编译器参数中-swf-version与-target-player之关系
  • 本文链接:http://zengrong.net/post/1486.htm

  • 2012-08-27更新:加入Flash Player 11.3/AIR 3.4的对应关系。
  • 2012-03-20更新:本篇文章只讲了Flex SDK的情况,但Flash IDE也能通过修改配置文件的方式支持新的Flash Player功能,详见这里:让Flash支持更新的Flash Player功能
  • 2012-04-08更新:加入AIR的版本说明;加入Flash Player 11.3的对应关系。

今天下载了Flex 4.6 SDK后,发现framework/flex-config.xml中的默认-swf-version的值变成了14,而-target-player则变成了11.1。

记得在Flash Player 11发布的时候,为了能正常的编译面向Flash Player 11的swf文件,需要将-swf-version的值设置为13。以此推算,14这个值应该是针对Flash Player 11.1的。

那么-swf-version和-target-player的对应关系如何?见下表:

Flash Player AIR Flex -swf-version -target-player
9 ? 3 9
10.0 1.5 4.0 10 10.0.0
10.1 2.0/2.5 4.1 10.1.0
10.2 2.6 4.5/4.5.1 11 10.2.0
10.3 2.7 12 10.3.0
11.0 3.0 13 11.0.0
11.1 3.1 4.6 14 11.1
11.2 3.2 15 11.2
11.3 3.3 16 11.3
11.4 3.4 Adobe Flex 4.6/Apache Flex 4.8 17 11.4

上面的这份表格,一部分是根据Targeting Flash Player versions整理出来的,最新的部分是我自己根据Flash Player/AIR的更新不断增加的。但这个表格是不准确的。

因为,-swf-version的值能支持到那个程度,其实与Flex SDK并没有直接的关系,而是依赖于Flex SDK中的playerglobal.swc(位于frameworks/libs/player)。

打开Flex 4.6 SDK的frameworks/libs/player文件夹,可以看到其中只有一个11.1子文件夹,放置着针对Flash Player 11.1的playerglobal.swc。这个swc的作用有2个:

  1. 在程序编写期间,Flash Builder使用它来提供自动完成功能。当然,如果直接用mxml编译器(比如我,就没有使用这个功能;
  2. 在程序编译期间,mxmlc编译器需要调用它。

在每个新版本的Flash Player 11发布的时候,必须一起提供playerglobal.swc文件,也是这个原因。因为SDK的发布,和Flash Player的发布并非总是同步的

在Flash 8时代,编译器和Flash Player是完全同步的。因为那时,只有Flash IDE可以生成swf文件。而Flex问世,以及MacroMedia被Adobe收购以后,Flash的发展就变得多样了,FlashIDE和Flex都可以生成swf文件,Flash Player的发展也更加独立。现在的情况,Flash CS,Flash Builder,Flex SDK,Flash Player的发布已经完全不同步了。尤其是当Adobe将Flex SDK交给Apache发展后,SDK的更新速度估计会更快。Adobe自己又会紧紧将Flash Player攥在手里,保持自己的步调来更新。(关于这段历史,我在Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系一文中做了详述)

偏题了一会儿,现在回到正题:

Flex SDK可以和不同版本的Flash Player相配。即使是使用Flex SDK 3.6,同样也可以开发出Flash Player 11.1支持的swf程序。(当然,前提是不使用Flex frameworks提供的组件,仅仅使用Flash Player提供的API)。通过使用不同版本Flash Player提供的playerglobal.swc文件,就可以让旧的Flex SDK兼容新的-swf-version和 -target-player编译属性。当然,也可以让新的Flex SDK兼容旧的-swf-version和-target-player。

例如,目前Adobe官方提供的最新版(也是最终版)Flex SDK版本为4.6。根据Adobe的说法,这个版本的Flex SDK的最低支持的-target-player为11.1。这是因为frameworks/libs/player中仅仅提供了11.1版本的playerglobal.swc。我们可以将旧版本的playerglobal.swc复制到该目录下,并修改frameworks/flex-config.xml中的target-player标签,以改变Flex SDK默认编译的swf目标。当然,更方便和灵活的做法是在Flex项目的编译属性中设置-target-player属性。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读