• 2013-04-16更新:更新Flash Player 11.7/AIR 3.7正式版。
  • 详细链接FlashPlayer 11.7详情
  • 2013-03-10更新:更新Flash Player 11.6/AIR 3.6正式版以及beta 11.7。
  • 详细链接FlashPlayer 11.6详情
  • 2012-11-07更新:更新Flash Player 11.5/AIR 3.5正式版发布日期。
  • 2012-10-10更新:加入Flash Player 11.5/AIR 3.5的对应关系;加入发布日期列;修改文章结构和部分内容。
  • 详细链接FlashPlayer 11.5详情
  • 2012-08-27更新:加入Flash Player 11.4/AIR 3.4的对应关系。
  • 2012-03-20更新:本篇文章只讲了Flex SDK的情况,但Flash IDE也能通过修改配置文件的方式支持新的Flash Player功能,详见这里:让Flash支持更新的Flash Player功能
  • 详细链接FlashPlayer 11.4详情
  • 2012-04-08更新:加入AIR的版本说明;加入Flash Player 11.3的对应关系。
  • 详细连接FlashPlayer 11.3详情

Flex 4.6 SDK中,可以发现framework/flex-config.xml中的默认-swf-version的值变成了14,而-target-player则变成了11.1。记得在Flash Player 10.2发布的时候,为了使用Flash 10.2提供的原生位图鼠标光标功能,需要在编译的时候将-swf-version编译器属性值设置为11。以此推算,14这个值是针对Flash Player 11.1的。那么-swf-version和-target-player的对应关系如何?见下表:

Flash Player AIR Flex -swf-version -target-player 发布日期
9   3 9 9  
10.0 1.5 4.0 10 10.0.0  
10.1 2.0/2.5 4.1 10 10.1.0  
10.2 2.6 4.5/4.5.1 11 10.2.0 2011-2-9
10.3 2.7   12 10.3.0  
11.0 3.0   13 11.0.0 2011-10-4
11.1 3.1 4.6 14 11.1 2011-11-7
11.2 3.2   15 11.2 2012-3-28
11.3 3.3   16 11.3 2012-6-8
11.4 3.4 Adobe Flex 4.6/Apache Flex 4.8 17 11.4 2012-8-21
11.5 3.5 Adobe Flex 4.6/Apache Flex 4.8 18 11.5 2012-11-06
11.6 3.6 Adobe Flex 4.7/Apache Flex 4.9 19 11.6 2013-02-12
11.7 3.7 Adobe Flex 4.7/Apache Flex 4.9 20 11.7 2013-04-09

flash polayer 15 -swf-version 26

-target-player和-swf-version

上面的这份表格,一部分是根据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个:
(这里是基于Flex SDK和Flash Builder讲解,如果你使用Flash Professional,可以看这里:让Flash支持更新的Flash Player功能

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

那么-target-player是干嘛的?它用来告诉Flex编译器,在哪里去找playerglobal.swc

在Flash Builder 4.6 的项目的 ActionScrip编译器 设置中,可以设置-target-player参数的值。默认是“使用SDK所需的最低版本”。对于我目前安装的Flex SDK 4.6来说,这个“最低版本”就是11.1。

而我们可以使用特定的版本,例如下图中是11.2.0。

在程序编写期间,Flash Builder会自动去frameworks/libs/player/11.2这个目录中寻找playerglobal.swc,如果找不到,一些11.2才支持的功能(例如MouseEvent.RIGHT_CLICK)就无法得到语法提示。

而在调试和发布程序的时候,编译器使用frameworks/libs/player/11.2/playerglobal.swc进行编译。如果依然找不到这个文件,编译会报错无法打开“D:\flex_sdks\4.6.0\frameworks\libs\player\11.2\playerglobal.swc”,如下图所示:

不同步性

在每个新版本的Flash Player 发布的时候,Adobe都一起提供了playerglobal.swc文件,而且会在发布文档中说明这个版本的Flash Player对应的-swf-version是多少。

因为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官方提供的最新版(也是Adobe Flex的最终版,因为后面会更名为Apache Flex SDK)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属性。

这里还有一篇文章介绍:Versioning in Flash Runtime (-swf-version)

swf version 与flash player 对应关系的更多相关文章

  1. 让旧版本的 Flash IDE 支持更新的 Flash Player/AIR 功能

    转载:https://blog.zengrong.net/post/1568.html 让旧版本的 Flash IDE 支持更新的 Flash Player/AIR 功能 今天在论坛上看到一篇文章:H ...

  2. AS3 os与version 区别 使用Capabilities类获取Flash Player的信息

    AS3中flash.system.Capabilities类提供诸多静态的只读属性来描述应用程序当前所运行在的系统和运行时信息,如Flash Player,Adobe AIR,Flash Lite.通 ...

  3. Adobe Flash Player 因过期而遭到阻止 更新插件 运行一次 解决方法

    老机器运行 10.3.183.90 比较流畅 可是 Chrome 浏览器提示 Adobe Flash Player 因过期而遭到阻止 更新插件 运行一次 每次单击 运行一次 才运行,这样每次提醒很烦人 ...

  4. js判断是否安装flash player及当前版本 和 检查flash版本是否需要升级

    一.js检查flash版本升级 for (var i = 0, len = navigator.plugins.length; i < len; i++) { var plugin = navi ...

  5. 判断当前系统当前浏览器是否安装启用 Adobe Flash Player,检查在chrome中的状态

    一.判断当前所在系统 let sUserAgent = navigator.userAgent;let isWin = (navigator.platform == "Win32" ...

  6. Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系

    转自zrong's blog:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的 ...

  7. [转]Flash Player、AIR、Flex SDK 大全

    平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...

  8. Flex Flash Player回声消除的最佳方法

    Adobe Flash Player 已经成为音频和视频播放的非常流行的工具.实际上,目前大多数因特网视频均使用 Flash Player观看. Flash Player 通过将许多技术进行组合可以提 ...

  9. csharp: Flash Player play *.flv file in winform

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

随机推荐

  1. Android Game Examples

    Game2 using UnityEngine; using System.Collections; public class Game2_Player : MonoBehaviour { publi ...

  2. 第18天 ajax技术和javascript加强(json)

    第18天    ajax技术和javascript加强(json) 复习: B/S架构实现文件上传的思路? 使用a标签实现文件下载功能,有什么问题? 使用Servlet实现文件下载的思路? 今日任务 ...

  3. HTTP运行时与页面执行模型

    注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/stwyhm/archive/2006/08/09/471765.html HTTP运行时 HTTP运行期处理客户端应用 ...

  4. IOS中实例的权限控制

    @public.@protected.@private的使用 在OC中声明一个类的时候,可以使用上面 @public.@protected.@private三个关键字声明实例的权限,例如下面的代码: ...

  5. Java实现压力测试---可输出请求信息、error信息

    import java.io.; import java.net.; import java.util.; import java.util.concurrent.; public class Tes ...

  6. runtime官方文档

    OC是一种面向对象的动态语言,作为初学者可能大多数人对面向对象这个概念理解的比较深,而对OC是动态语言这一特性了解的比较少.那么什么是动态语言?动态语言就是在运行时来执行静态语言的编译链接的工作.这就 ...

  7. onmousedown活用之鼠标拖动

    这个布局蛮简单的就是一个div块,通过定位,固定位置 <html> <head> <meta charset="UTF-8"> <titl ...

  8. 第二题 已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数     2008 北京奥运会男足参赛国家:  科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利

    import java.util.ArrayList; import java.util.List; import java.util.Random; public class List1 { pub ...

  9. 3.1 Data Member的绑定

       文章开始提出了一段示例代码,并讨论了返回哪个x的问题.然后 a)   给出了我们普遍认为正确的回答,并肯定了这个想法: b)   提醒大家,这在以前的编译器实现中,并非正确. 在早期的实现中,首 ...

  10. Objective-C和Swift实现单例的几种方式

    在Swift开发中,我们对于跨类调用的变量常量,因为并没有OC中使用的全局头文件中写宏的形式,我们一般采用在类外定义全局变量/常量的形式来跨类调用.而问题在于目前写的项目需要在新添加的OC写的功能模块 ...