2013 年 6 月 11 日。欢迎使用 Flash Player 11.7 和 AIR 3.7。这是一项计划更新。此版本包括一些错误修正和安全增强功能

已修正的问题

  • 摄像头对 stageVideo(iOS) 不起作用 (3558247)
  • 没有禁用硬件加速的选项 (3560209)
  • 没有回退到 WAV 音频的选项 (3553459)

新增功能

此版本中不包括任何功能。
 
以下功能在 2013 年 4 月 9 日发行的 Flash Player 中提供。
新增功能:
  • 沙箱化增强
  • 阻止对共享对象进行云备份 (iOS)
  • 对选定设备使用 CPU 渲染模式 (iOS)
  • 外部托管二级 SWF 文件 (iOS)
  • GameInput API (Android)
 
如需 Flash Player 和 AIR 中功能的完整列表,包括在之前的版本中引入的功能,请查阅此处的文档。
 

发行版本

提供的软件 发行版本
 Flash Player 台式机版 (Mac)  11.7.700.225
 Flash Player 台式机版 (Win)  11.7.700.224
 AIR 台式机版 (Mac)  3.7.0.2100
 AIR 台式机版 (Win)  3.7.0.2090
 AIR 移动设备版  3.7.0.2090
 AIR SDK & Compiler (Mac)  3.7.0.2100
 AIR SDK & Compiler (Win)  3.7.0.2090

已知问题

  • 有些新版本的 AMD 图形处理单元驱动程序在某些情况下会出现显示问题 (3431502)
  • 网络摄像头在与 Microsoft Kinect 一起使用时发生故障 (3482709)
  • 在 AIR for iOS 中,无法包装本地化的 swf 名称 (3518195)
  • 在 AIR for iOS 中,将焦点赋予 Spark TextArea 组件时可能导致文本截断 (3514889)
  • 当 AIR 安装对话框中的应用程序描述较长时,会导致按钮不可见 (3515305)
  • FLVPlayback 视频循环中稍有延迟 (3515066)
  • 发布按比例缩小的大位图时,它无法正确显示 (3520589)
  • 在 AIR 中,自定义上下文菜单项会触发多余的事件 (3493614)
  • 在 Chrome 浏览器中,在运行时更换麦克风会发生故障 (3493587)
  • 在 Internet Explorer 中,滚动 Flash 内容时如果超出视图,音频会发生混乱 (3520586)
  • 将增强麦克风与 AEC 连接时,AAC 音频会失真 (3523551)

安全性增强功能

安全公告 受影响的产品
 APSB13-16  Flash Player 台式机版 Windows® & Mac
 APSB13-16  Flash Player AndroidTM

新增功能:使用指南

阻止对共享对象进行云备份 (iOS)

当前在用于 iOS 的 AIR 应用程序中,开发人员没有办法来阻止在 Apple iCloud 上对本地共享对象进行备份。而在 AIR 3.7 中,已将一个新的静态属性“preventBackup”引入 SharedObject ActionScript 类中,这便使得开发人员可以突破此局限性了。此属性只能用于 3.7 或更高版本的命名空间 (swf-version=>20)。将此属性指定为 true 将不会备份任何共享对象。此属性的默认值为 false,且只对具有 iOS 5.1 或更高版本的设备有效。

var mySO:SharedObject;
mySO = SharedObject.getLocal("test");
mySO.data.userName = "developer";
mySO.data.itemNumbers = new Array(1,2,3);
SharedObject.preventBackup = true;
mySO.flush();


对选定设备使用 CPU 渲染模式,对其他设备使用 GPU 模式 (iOS)

对 iOS 设备新增了一个标记 <forceCPURenderModeForDevices>,可用来对指定的一组 iOS 设备强制采用 CPU 渲染模式,而对其他剩余设备采用 GPU 渲染模式。对于某些低端设备,如 iPad1 和 iPod4,当 GPU 渲染模式导致其内存不足时,便可以使用此功能。
例如,如果指定 <renderMode> GPU </renderMode> 和 <forceCPURenderModeForDevices> iPhone1 iPad1 </forceCPURenderModeForDevices>,则所有 iPad1 和 iPhone1 以外的 iOS 设备将采用 GPU 渲染模式。
请注意,此标记当前仅适用于 iOS。应将此标记添加到 iPhone 标记下平台特定的部分。

<iPhone>
    <InfoAdditions>
      <![CDATA[
         <key>UIDeviceFamily</key>
         <array>
           <string>1</string>
           <string>2</string>
         </array>
         <key>UIStatusBarStyle</key>
         <string>UIStatusBarStyleBlackOpaque</string>
         <key>UIRequiresPersistentWiFi</key>
         <string>YES</string>
      ]]>
    </InfoAdditions>
    <forceCPURenderModeForDevices> iPhone3,1 iPad </forceCPURenderModeForDevices>
</iPhone>


标记 <forceCPURenderModeForDevices> 添加到了 iPhone 标记下,其值是一些以空格分隔的设备型号名称。以下列出了一些有效的设备型号名称。

"iPod4,1"   // iPod Touch Fourth Generation
"iPod5,1"   // iPod Touch Fifth Generation
"iPhone2,1" // iPhone 3GS
"iPhone3,1" // iPhone 4
"iPhone3,2" // iPhone 4 CDMA
"iPhone4,1" // iPhone 4S
"iPhone5,1" // iPhone 5
"iPad1,1"   // iPad
"iPad2,1"   // iPad 2
"iPad2,2"   // iPad 2 (GSM)
"iPad2,3"   // iPad 3 (CDMA)
"iPad2,4"   // iPad 3 (CDMAS)
"iPad2,5"   // iPad Mini Wifi
"iPad3,1"   // iPad 3 (WIFI)
"iPad3,2"   // iPad 3 (CDMA)
"iPad3,3"   // iPad 3 GSM
"iPad3,4"   // iPad 4 (Wifi)


外部托管二级 SWF 文件 (iOS)

应用程序开发人员如今可以在一个外部服务器上来托管其二级 SWF,并可以根据其应用程序逻辑的需要,按需加载这些 SWF。在 AOT 模式下具有 ABC 码的二级 SWF 之前只适用于本地包装的 SWF,如今也可以作为外部 SWF 来加载了。
开发人员需要将 Loader 的 URLRequest 的 URL 更改为其外部托管去除代码的 SWF 的 URL。以下是一个使用此功能的 URL 请求示例:

private var externalSwfUrl:String= "http://www.xyz.com/ExternalSwf.swf";
private var urlRequest:URLRequest = new URLRequest(externalSwfUrl);

要使用此功能,开发人员必须指定一个文本文件,其中包含要去除代码且要进行外部托管的 SWF 文件的详细信息。开发人员需要在此文本文件中将要进行外部托管的 SWF 文件以行分隔路径指定。在示例文本文件中指定 SWF 文件的格式如下所示:

assets/Level1.swf
assets/Level2.swf
assets/Level3/asset/Level3.swf

应在应用程序描述符中 <iPhone> 标记下的 <externalSwfs> 标记中指定此文本文件,如下所示:

<iPhone>
       .
       .
       <externalSwfs>assets/SampleSWFInfoFile.txt</externalSwfs>
       .
       .
</iPhone>

在 ADT 打包期间,开发人员需要像指定资源一样指定该文本文件,并在其中指定一组 SWF。以下是一个使用此功能的 ADT 命令示例:

adt -package -target ipa-app-store -provisioning-profile <Provisioning Profile> -storetype pkcs12 -keystore <Certificate> -storepass <Password> ResultantIPA.ipa SampleMainSwf-app.xml SampleMainSwf.swf assets/SampleSWFInfoFile.txt assets/Level1.swf assets/Level2.swf assets/Level3/asset/Level3.swf

在 IPA 打包期间,ADT 提取出在示例文本文件中指定的所有子 SWF 中的 Actionscript 代码,将其添加到最终可执行文件中,并将去除代码的 SWF 移动到在当前工作目录中创建的“externalStrippedSwfs”文件夹下。“externalStrippedSwfs”文件夹中的目录结构与文本文件中指定的目录结构保持相同。生成的去除代码的 SWF 可以在一台 web 服务器上实现外部托管。
以下是一个 Actionscript 代码工作样例,它从外部服务器加载使用上述工作流导出的二级 swf:

package
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLRequest;
    import flash.system.ApplicationDomain;
    import flash.system.LoaderContext;
 
    public class SampleMainSwf extends Sprite
    {
        private var externalLoader:Loader;
        private var url:String= "http://www.xyz.com/Level1.swf";
        private var urlRequest:URLRequest = new URLRequest(url);
        private var ldrContext:LoaderContext;
 
        public function SampleMainSwf()
        {
            externalLoader = new Loader();
            externalLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
            externalLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
            ldrContext=new LoaderContext(false,ApplicationDomain.currentDomain,null);
 
            try
            {
                externalLoader.load(urlRequest, ldrContext);
            }
            catch(e:Error)
            {
                trace("Error ID : "+e.errorID+"\nError Message : "+e.message);
            }
        }
 
        private function completeHandler(e:Event):void
        {
            addChild(externalLoader);
        }
 
        private function errorHandler(e:IOErrorEvent):void
        {
            trace("In IO ErrorEvent Handler");
        }
 
    }
}

注意
1. Flash Builder 4.7/Flash Professional CS6 的当前版本不支持此功能。要能够生成去除代码的 SWF 进行外部托管,应使用命令行 ADT 打包。
2. 加载 Flex 二级 SWF 会导致应用程序崩溃。

GameInput API (Android)

GameInput API 是一个接口,允许应用程序与附加的游戏输入设备(操纵杆、游戏手柄、游戏棒等)进行通信。游戏输入设备多种多样,功能和控制也各不相同。只有在 OS 4.1 或更高版本上运行的 Android 设备才支持此 API。实施此 API 后,便可能使不同(也可能未知)类型的游戏输入设备功能发挥更为出色。
此功能仅适用于 3.7 或更高版本的命名空间,且要求 swf 版本不低于 20。

private var gameInput:GameInput;
    public function TestGameInput()
    {
        trace("GameInput.isSupported - "+ GameInput.isSupported);
        trace("GameInput.numDevices - "+ GameInput.numDevices);
 
        gameInput = newGameInput();
        gameInput.addEventListener(GameInputEvent.DEVICE_ADDED, inputDeviceAddedEvent);
        gameInput.addEventListener(GameInputEvent.DEVICE_REMOVED, inputDeviceRemovedEvent);
 
        function inputDeviceRemovedEvent(e:GameInputEvent):void
        {
            trace("inputDeviceRemovedEvent - "+ e.device);
        }
 
        function inputDeviceAddedEvent(e:GameInputEvent):void
        {
            trace("inputDeviceAddedEvent - "+ e.device);
            getDeviceInformation(e.device);
        }
 
        function getDeviceInformation(device:GameInputDevice):void
        {
            trace("device.enabled - "+ device.enabled);
            trace("device.id - "+ device.id);
            trace("device.name - "+ device.name);
            trace("device.numControls - "+ device.numControls);
            trace("device.sampleInterval - "+ device.sampleInterval);
 
            for(var i:Number=0; i < device.numControls; i++)
            {
                var control:GameInputControl = device.getControlAt(i);
                getControlInformation(control);
                control.addEventListener(Event.CHANGE, changeEvent);
            }
        }
 
        function changeEvent(e:Event):void
        {
            var control:GameInputControl = e.target as GameInputControl;
            getControlInformation(control);
        }
 
        function getControlInformation(control:GameInputControl):void
        {
            trace("control.device - "+ control.device);
            trace("control.value - "+ control.value);
            trace("control.minValue - "+ control.minValue);
            trace("control.maxValue - "+ control.maxValue);
            trace("control.id - "+ control.id);
 
        }
    }

创作指南

针对 Flash Player 11.7 进行创作

要使用此新版 Flash Player,您需要将一个额外的编译器参数传递给 Flex 编译器,以便将 SWF 版本指定为 20:-swf-version=20。请参见下文中的说明。如果正在使用 Adobe Flex SDK:

  • 下载用于 Flash Player 11.7 的新 playerglobal.swc。
  • 从 Flex 4.5 SDK 表中下载 Flex 4.5.1 SDK (4.5.1.21328)。
  • 在开发环境中安装此版本
  • 在 Flash Builder 中,创建一个新的 ActionScript 项目:“文件”->“新建”->“ActionScript 项目”。
  • 打开项目的“属性”面板(单击鼠标右键,然后选择“属性”)。从左侧列表中选择“ActionScript 编译器”。
  • 使用右上角的“配置 Flex SDK”选项将项目指向 Flex 版本 21328。单击“确定”。
  • 配置项目,以便将 SWF 版本指定为 20。
  • 打开项目的“属性”面板(单击鼠标右键,然后选择“属性”)。从左侧列表中选择“ActionScript 编译器”。
  • 将 -swf-version=20 添加到“附加编译器参数”输入中。这样可确保输出的 SWF 为 SWF 版本 20。如果您在命令行而不是在 Flash Builder 中进行编译,则需要添加相同的编译器参数。
  • 请确保在浏览器中安装了新的 Flash Player 11.7。

针对 AIR 3.7 进行创作 更新至 AIR 3.7 命名空间

要访问新的 AIR 3.7 API 和行为,必须将应用程序描述符文件更新为 3.7 命名空间。如果您的应用程序不需要使用新的 AIR 3.7 API 和行为,则不需要更新命名空间。但是,即使您尚未利用新的 3.7 功能,我们也建议所有用户着手使用 AIR 3.7 命名空间。要更新命名空间,请将应用程序描述符中的 xmlns 属性更改为:<application xmlns="http://ns.adobe.com/air/application/3.7">

报告错误

发现了程序错误?请将错误报告提交到 Flash Player 和 Adobe AIR 错误数据库

Flash Player 和 AIR 可利用您的图形硬件解码和播放 H.264 视频。有些视频问题可能只能用特殊图形硬件和驱动程序才会重现。当报告有问题的视频时,必须记下您的图形硬件和驱动程序,以及操作系统和浏览器(当使用 Flash Player 时),以便我们可以重现和调查问题。请确保按报告视频播放问题的说明提供所需的信息。注意:由于我们会收到大量电子邮件,所以无法答复所有的请求。

感谢您使用 Adobe® Flash Player® 和 AIR®,并抽出宝贵时间向我们提供反馈!

系统要求

有关最新的 Flash Player 系统要求,请查阅此处的文档

有关最新的 AIR 系统要求,请查阅此处的文档

Runtime 版本历史记录


 发布日期 运行时版本 安全性增强
2013 年 5 月 21 日 Flash Player 台式机版(Windows、Mac):11.7.700.203
Flash Player (Chrome):11.7.700.203
 - 
2013 年 5 月 14 日 Flash Player 台式机版(Windows、Mac):11.7.700.202
AIR(台式机版、iOS、Android):3.7.0.1860
AIR SDK & Compiler:3.7.0.1860
 APSB13-14
2013 年 4 月 9 日 Flash Player 台式机版(Windows、Mac):11.7.700.169
Flash Player Chrome 版:11.7.700.179
AIR(台式机版、iOS):11.7.0.1530
AIR Android:11.7.0.1660
AIR SDK:11.7.0.1530
AIR SDK & Compiler:11.7.0.1530
 APSB13-11
2013 年 3 月 12 日 Flash Player 台式机版(Windows、Mac):11.6.602.280
AIR(Windows、Mac、Android、iOS):3.6.0.6090
AIR SDK:3.6.0.6090
AIR SDK & Compiler:3.6.0.6090
 APSB13-09
2013 年 2 月 26 日 Flash Player 台式机版(Windows、Mac):11.6.602.171  APSB13-08
2013 年 2 月 12 日 Flash Player 台式机版 (Windows):11.6.602.168
Flash Player 台式机版 (Mac):11.6.602.167
AIR(Windows、Mac、Android、iOS):3.6.0.597
AIR SDK & Compiler:3.6.0.599
 APSB13-05
2013 年 2 月 7 日 Flash Player 台式机版(Windows、Mac):11.5.502.149  APSB13-04
2013 年 1 月 8 日 Flash Player 台式机版(Windows、Mac):11.5.502.146
AIR(Windows、Mac、移动设备版):3.5.0.1060
AIR SDK:3.5.0.1060
 APSB13-01
2012 年 12 月 11 日 Flash Player 台式机版 (Windows):11.5.502.135
Flash Player 台式机版 (Mac):11.5.502.136
AIR(Windows、Android):3.5.0.880
AIR Mac:3.5.0.890
 APSB12-27
2012 年 11 月 6 日 Flash Player 台式机版(Windows、Mac):11.5.502.110
AIR(Windows、Mac、移动设备版):3.5.0.600
AIR SDK:3.5.0.600
 APSB12-24
2012 年 10 月 8 日 Flash Player 台式机版(Windows、Mac):11.4.402.287
AIR(Windows、Mac、移动设备版):3.4.0.2710
AIR SDK:3.4.0.2710
 APSB12-22
2012 年 8 月 21 日 Flash Player 台式机版(Windows、Mac):11.4.402.265
AIR(Windows、Mac、移动设备版):3.4.0.2540
AIR SDK:3.4.0.2540
 APSB12-19

本产品经 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 许可  Twitter™ 与 Facebook 中的内容不在 Creative Commons 的条款约束之下。

法律声明   |   在线隐私策略