flash.desktopNativeProcess NativeProcess 类提供命令行集成和常规启动功能。flash.events:EventDispatcher NativeProcess 类提供命令行集成和常规启动功能。NativeProcess 类允许 AIR 应用程序在主机操作系统上执行本机进程。AIR 应用程序可以监视进程的标准输入 (stdin) 和标准输出 (stdout) 流以及进程的标准错误 (stderr) 流。

NativeProcess 类及其功能只对使用本机安装程序安装的 AIR 应用程序(扩展桌面配置文件应用程序)可用。调试时,可将 -profile extendedDesktop 参数传递到 ADL 以启用 NativeProcess 功能。在运行时,您可以检查 NativeProcess.isSupported 属性以确定是否支持本机进程通信。

AIR 配置文件支持:通过本机安装程序部署到桌面操作系统的应用程序支持此功能。移动设备或用于电视的 AIR 设备上不支持此功能。您可以使用 NativeProcess.isSupported 属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

使用本机安装程序安装的 AIR 应用程序(扩展桌面配置文件应用程序)也可以使用 File.openWithDefaultApplication 打开应用程序。但是,NativeProcess 类可提供对标准输入、标准输出和标准错误管道的直接访问。

注意:使用 extendedTV 配置文件的用于电视的 AIR 应用程序可以使用 ActionScript 本机扩展来执行本机进程。

下面的示例会检查计算机是否支持本机进程通信。如果支持,则应用程序将为本机进程设置事件侦听器,并启动主应用程序目录中的 test.py 文件: package { import flash.display.Sprite; import flash.desktop.NativeProcess; import flash.desktop.NativeProcessStartupInfo; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.events.NativeProcessExitEvent; import flash.filesystem.File; public class NativeProcessExample extends Sprite { public var process:NativeProcess; public function NativeProcessExample() { if(NativeProcess.isSupported) { setupAndLaunch(); } else { trace("NativeProcess not supported."); } } public function setupAndLaunch():void { var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); var file:File = File.applicationDirectory.resolvePath("test.py"); nativeProcessStartupInfo.executable = file; var processArgs:Vector.<String> = new Vector.<String>(); processArgs[0] = "foo"; nativeProcessStartupInfo.arguments = processArgs; process = new NativeProcess(); process.start(nativeProcessStartupInfo); process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData); process.addEventListener(NativeProcessExitEvent.EXIT, onExit); process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError); process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError); } public function onOutputData(event:ProgressEvent):void { trace("Got: ", process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable)); } public function onErrorData(event:ProgressEvent):void { trace("ERROR -", process.standardError.readUTFBytes(process.standardError.bytesAvailable)); } public function onExit(event:NativeProcessExitEvent):void { trace("Process exited with ", event.exitCode); } public function onIOError(event:IOErrorEvent):void { trace(event.toString()); } } } 将下列 Python 脚本添加到应用程序目录中名为 test.py 的文件中(并确保已安装 Python):
 #!/usr/bin/python
 # ------------------------------------------------------------------------------
 # Sample Python script
 # ------------------------------------------------------------------------------
 
 import sys
 
 for word in sys.argv: #echo the command line arguments
     print word
 
 print "HI FROM PYTHON"
 print "Enter user name" 
 line = sys.stdin.readline()
 
 sys.stdout.write("hello," + line)
flash.external.ExtensionContextexit 表示本机进程已退出。flash.events.NativeProcessExitEventflash.events.NativeProcessExitEvent 表示本机进程已退出。exitCode 属性包含此进程在退出时返回给主机操作系统的值。如果 AIR 应用程序通过调用 NativeProcess 对象的 exit() 方法终止进程,则 exitCode 属性将设置为 NaN。 standardInputIoError 表示写入标准输入 (stdin) 流已失败。flash.events.IOErrorEventflash.events.IOErrorEvent 表示写入标准输入 (stdin) 流已失败。当 closeInput() 方法失败或运行时无法将数据写入到本机进程的标准输入管道时,NativeProcess 对象将调度此事件。 standardOutputIoError 表示从 stdout 流进行读取已失败。flash.events.IOErrorEventflash.events.IOErrorEvent 表示从 stdout 流进行读取已失败。当运行时无法从本机进程的标准输出管道读取数据时,NativeProcess 对象可调度此事件。 standardErrorIoError 表示从标准错误 (stderror) 流进行读取已失败。flash.events.IOErrorEventflash.events.IOErrorEvent 表示从标准错误 (stderror) 流进行读取已失败。当运行时无法从本机进程的标准错误管道读取数据时,NativeProcess 对象可调度此事件。 standardInputClose 指出 NativeProcess 对象已通过调用 closeInput() 方法关闭其输入流。flash.events.Eventflash.events.Event 表示 NativeProcess 对象已通过调用 closeInput() 方法关闭其输入流。当实际的本机进程自身关闭输入流时,NativeProcess 对象不会调度此事件。 standardInputProgress 表示 NativeProcess 已经向子进程的输入流写入数据。flash.events.ProgressEventflash.events.ProgressEvent 表示 NativeProcess 已经向子进程的输入流写入数据。当数据写入流时,NativeProcess 对象将调度此事件。此事件不表示子进程是否已读取了任何数据。 standardErrorClose 表示 NativeProcess 已关闭其错误流。flash.events.Eventflash.events.Event 表示 NativeProcess 已关闭其错误流。 standardErrorData 表示标准错误 (stderror) 流上存在本机进程可以读取的数据。flash.events.ProgressEventflash.events.ProgressEvent 表示标准错误 (stderror) 流上存在本机进程可以读取的数据。当子进程刷新其标准错误流或用于在进程之间通信的内部缓冲区已满时,NativeProcess 对象将调度此事件。不要编写依赖于此内部缓冲区大小的代码;此大小视版本和操作系统而定。 standardOutputClose 表示 NativeProcess 已关闭其输出流。flash.events.Eventflash.events.Event 表示 NativeProcess 已关闭其输出流。 standardOutputData 表示输出流上存在本机进程可以读取的数据。flash.events.ProgressEventflash.events.ProgressEvent 表示输出流上存在本机进程可以读取的数据。当子进程刷新其 stdout 流或用于在进程之间通信的内部缓冲区已满时,NativeProcess 对象将调度此事件。不要编写依赖于此内部缓冲区大小的代码;此大小视版本和操作系统而定。 NativeProcess 构建未初始化的 NativeProcess 对象。 构建未初始化的 NativeProcess 对象。调用 start() 方法启动进程。 start()closeInput 关闭此进程上的输入流。 关闭此进程上的输入流。某些命令行应用程序会一直等到关闭输入流后,才启动某些操作。关闭此流后,直到此进程退出并再次启动后,才能重新打开此流。 ioErrorStandardInputflash.events:IOErrorEvent在关闭此进程的输入流时出现问题 在关闭此进程的输入流时出现问题 standardInputCloseflash.events:Event输入流已关闭。 输入流已关闭。exit 尝试退出本机进程。forceBooleanfalse应用程序是否应尝试强制退出本机进程(如有必要)。

如果 force 参数设置为 false,此方法将尝试妥善退出本机进程。此方法“要求”本机进程退出。本机进程可能会忽略此请求,因此,此方法不能保证确实让本机进程退出。NativeProcess 对象仅调度 NativeProcessExitEvent,即使本机进程退出也是如此。

如果 force 参数设置为 true,此方法会尝试强制退出本机进程。如非绝对必要,请不要在 force 参数设置为 true 时调用此方法。在 force 参数设置为 true 时调用此方法可能会对与本机进程相关的系统资源状态产生不利的影响。例如,可能会使打开的文件处于不一致的状态中。运行时会尽力设法强制本机进程退出。但是,它并不能保证本机进程一定会退出。NativeProcess 对象仅调度 NativeProcessExitEvent,即使本机进程退出也是如此。

如果 NativeProcess 成功退出,它会调度 NativeProcessExitEvent 事件。

尝试退出本机进程。
start 启动由指定的启动信息标识的本机进程。如果 NativeProcess 当前正在运行。 IllegalOperationErrorflash.errors:IllegalOperationError如果 NativeProcessStartupInfo 的 nativePath 属性不存在。 ArgumentErrorArgumentError如果 NativeProcess 没有成功启动。 ErrorErrorinfoflash.desktop:NativeProcessStartupInfoNativeProcessStartupInfo 定义有关如何启动本机进程的信息。 启动由指定的启动信息标识的本机进程。进程启动后,所有输入流和输出流将打开。在请求操作系统启动指定的进程后,此方法将立即返回。如果进程当前正在运行,NativeProcess 对象会引发 IllegalOperationError 异常。如果 NativeProcess 对象的 running 属性返回 true,则表示此进程正在运行。如果操作系统无法启动进程,会引发 Error

一个 NativeProcess 实例对应于基础操作系统上的一个进程。如果要同时执行同一个操作系统进程的多个实例,您可以为每个子进程创建一个 NativeProcess 实例。

每当 NativeProcess 对象的 running 属性返回 false,您就可以调用此方法。这意味着 NativeProcess 对象可以重用。换句话说,您可以构建 NativeProcess 实例,调用 start() 方法,等待 exit 事件,然后再次调用 start() 方法。在对 start() 方法的后续调用中,可以使用其他 NativeProcessStartupInfo 对象作为 info 参数值。

NativeProcess 类及其功能只对使用本机安装程序安装的 AIR 应用程序可用。调试时,可将 -profile extendedDesktop 参数传递到 ADL 以启用 NativeProcess 功能。检查 NativeProcess.isSupported 属性以确定是否支持本机进程通信。

重要安全注意事项:

本机进程 API 可以在用户系统上运行任何可执行文件。构造和执行命令时要格外小心。如果要执行的命令的任何部分来自外部源,务必仔细验证该命令可以安全执行。同样,AIR 应用程序应对传递给正在运行的进程的数据进行验证。

但是,对输入进行验证可能十分困难。为了避免这种困难,最好编写具有特定 API 的本机应用程序(如 Windows 上的 EXE 文件)。这些 API 应该只处理 AIR 应用程序特别要求的命令。例如,本机应用程序可能只通过标准输入流接受有限的一组指令。

Windows 上的 AIR 不允许直接运行 .bat 文件。Windows .bat 文件是由命令解释程序应用程序 (cmd.exe) 执行的。调用 .bat 文件时,此命令应用程序可以将传递给该命令的参数解释为要启动的其他应用程序。在参数字符串中恶意注入额外字符可能导致 cmd.exe 执行有害的或不安全的应用程序。例如,在没有经过正确的数据验证的情况下,AIR 应用程序可能会调用 myBat.bat myArguments c:/evil.exe。该命令应用程序除了运行您的批处理文件外,还将启动 evil.exe 应用程序。

如果使用 .bat 文件调用 start() 方法,NativeProcess 对象会引发异常。Error 对象的 message 属性包含字符串“错误 #3219: 无法启动 NativeProcess”。

NativeProcessStartupInfo
isSupported 表示在当前的配置文件中是否支持运行本机进程。Boolean 表示在当前的配置文件中是否支持运行本机进程。仅当在 extendedDesktop 配置文件中运行时,此属性才返回 true。此外,对于作为 AIR 文件安装的应用程序,NativeProcess.isSupported 始终为 false。您必须使用 ADT -target native 标志将 AIR 应用程序打包,才能使用 NativeProcess 类。 running 表示本机进程当前是否正在运行。Boolean 表示本机进程当前是否正在运行。如果您调用了 start() 方法,且 NativeProcess 对象尚未调度 exit 事件,则此进程正在运行。一个 NativeProcess 实例对应于基础操作系统上的一个进程。只要基础操作系统进程正在执行(同时本机进程正在启动并直到进程向操作系统返回退出代码),此属性就会始终为 truestandardError 提供对来自此本机进程的标准错误输出的访问。flash.utils:IDataInput如果没有显示任何数据,仍尝试执行读取操作。 EOFErrorflash.errors:EOFError 提供对来自此本机进程的标准错误输出的访问。当数据在此管道上变为可用后,NativeProcess 对象将调度 ProgressEvent 对象。如果您在无数据可用时尝试从此流中读取数据,NativeProcess 对象会引发 EOFError 异常。

此类型为 IDataInput,因为数据是从当前进程的角度输入的,即使它是子进程的输出流也如此。

flash.events.ProgressEventflash.utils.IDataInput
standardInput 提供对此本机进程的标准输入的访问。flash.utils:IDataOutput当向此值写入内容时、当 running 返回 false 时或当尝试向闭合的输入流写入数据时。 IllegalOperationErrorflash.errors:IllegalOperationError 提供对此本机进程的标准输入的访问。使用此管道将数据发送到此进程。每次将数据写入 input 属性时,会尽快将该数据写入本机进程的输入管道中。

此类型为 IDataOutput,因为数据是从当前进程的角度输出的,即使它是子进程的输入流也如此。

closeInput()IDataOutput
standardOutput 提供对此本机进程标准输出管道的访问。flash.utils:IDataInput如果没有显示任何数据,仍尝试执行读取操作。 EOFErrorflash.errors:EOFError 提供对此本机进程标准输出管道的访问。使用此管道从本机进程的标准输出中读取数据。当此管道中存在数据时,NativeProcess 对象将调度 ProgressEvent。如果在无任何数据可用时尝试从此流中读取数据,NativeProcess 对象会引发 EOFError。

此类型为 IDataInput,因为数据是从当前进程的角度输入的,即使它是子进程的输出流也如此。

flash.utils.IDataInputflash.events.ProgressEvent
InteractiveIcon InteractiveIcon 类是一个基类,它表示与应用程序关联的操作系统图标。flash.desktop:Icon InteractiveIcon 类是一个基类,它表示与应用程序关联的操作系统图标。

使用 NativeApplication 对象的 icon 属性可获取应用程序图标的实例。图标类型将是 InteractiveIcon 的子类之一,在 Mac OS X ® 中为 DockIcon,在 Windows ® 和 Linux 中为 SystemTrayIcon。

不能直接实例化 InteractiveIcon 类。调用 new InteractiveIcon() 构造函数将引发 ArgumentError 异常。

flash.desktop.NativeApplication.iconflash.desktop.NativeApplication.supportsDockIconflash.desktop.NativeApplication.supportsSystemTrayIconbitmaps 作为不同大小的 BitmapData 对象数组的图标图像。Array 作为不同大小的 BitmapData 对象数组的图标图像。

当在给定的操作系统上下文中显示图标时,将使用数组中最接近所显示大小的位图(必要时进行缩放)。常用的大小包括 16x16、32x32、48x48 和 128x128。(在不远的将来,某些操作系统将可以使用 512x512 像素的图标。)

在某些上下文中,如果没有为 bitmaps 属性分配任何数据,则操作系统可以使用默认的系统图标。在其他上下文中,不显示图标。

要设置或更改图标外观,请将 BitmapData 对象数组分配给 bitmaps 属性:

icon.bitmaps = new Array(icon16x16.bitmapData, icon128x128.bitmapData);

直接修改 bitmaps 数组没有任何效果。

要清除图标图像,请为 bitmaps 属性分配一个空数组。

注意:在为图标加载图像文件时,PNG 文件格式通常提供最佳 Alpha 混合。GIF 格式只支持打开或关闭透明度(无混合)。JPG 格式完全不支持透明度。

height 图标的当前显示高度,以像素为单位。int 图标的当前显示高度,以像素为单位。

某些图标上下文支持动态大小。height 属性表示从当前上下文的 bitmaps 数组中选择的图标的高度。如果操作系统已缩放了该图标,则实际显示高度可能会有所不同。

width 图标的当前显示宽度,以像素为单位。int 图标的当前显示宽度,以像素为单位。

某些图标上下文支持动态大小。width 属性表示从当前上下文的 bitmaps 数组中选择的图标的宽度。如果操作系统已缩放了该图标,则实际显示宽度可能会有所不同。

InvokeEventReason InvokeEventReason 类枚举 InvokeEvent 对象的 reason 属性返回的值。定义一些用于表示可通过操作系统调用应用程序的方法的常量。 Object InvokeEventReason 类枚举 InvokeEvent 对象的 reason 属性返回的值。 flash.events.InvokeEvent.reasonLOGIN 表示因用户登录而发生了 InvokeEvent 事件。loginString 表示因用户登录而发生了 InvokeEvent 事件。 STANDARD 表示因除登录之外的其他原因而发生了 InvokeEvent 事件。standardString 表示因除登录之外的其他原因而发生了 InvokeEvent 事件。 NativeDragActions NativeDragActions 类定义一些字符串常量,它们表示拖放操作的名称。Object NativeDragActions 类定义一些字符串常量,它们表示拖放操作的名称。

NativeDragActions 常量用作 NativeDragManager 和 NativeDragEvent 类的 dropAction 属性的值。

flash.desktop.NativeDragManagerflash.events.NativeDragEventCOPY 定义用于复制操作的字符串。copyString 定义用于复制操作的字符串。 LINK 定义用于链接操作的字符串。linkString 定义用于链接操作的字符串。 MOVE 定义用于移动操作的字符串。moveString 定义用于移动操作的字符串。 NONE 定义在未指定任何操作时使用的字符串。noneString 定义在未指定任何操作时使用的字符串。

nativeDragComplete 事件中,none 动作表示用户放弃了拖放操作。

ClipboardFormats ClipboardFormats 类定义一些常量,它们表示用于 Clipboard 类的标准数据格式的名称。Object ClipboardFormats 类定义一些常量,它们表示用于 Clipboard 类的标准数据格式的名称。Flash Player 10 仅支持 TEXT_FORMAT、RICH_TEXT_FORMAT 和 HTML_FORMAT。 flash.desktop.ClipboardBITMAP_FORMAT 图像数据(仅限 AIR)。air:bitmapString 图像数据(仅限 AIR)。 FILE_LIST_FORMAT 文件数组(仅限 AIR)。air:file listString 文件数组(仅限 AIR)。 FILE_PROMISE_LIST_FORMAT 文件承诺列表(仅 AIR)。air:file promise listString 文件承诺列表(仅 AIR)。 HTML_FORMAT HTML 数据。air:htmlString HTML 数据。 RICH_TEXT_FORMAT RTF 格式数据。air:rtfString RTF 格式数据。 TEXT_FORMAT 字符串数据。air:textString 字符串数据。 URL_FORMAT URL 字符串(仅限 AIR)。air:urlString URL 字符串(仅限 AIR)。 NativeApplication NativeApplication 类表示此 AIR 应用程序。flash.events:EventDispatcher NativeApplication 类表示此 AIR 应用程序。

NativeApplication 类提供应用程序信息、应用程序范围内的函数,并调度应用程序级别的事件。

NativeApplication 对象是一个在启动时自动创建的单一对象。使用静态属性 NativeApplication.nativeApplication 获取应用程序的 NativeApplication 实例。

keyUp 用户释放某个键时调度。flash.events.KeyboardEvent.KEY_UPflash.events.KeyboardEvent 用户释放某个键时调度。NativeApplication 实例提供此事件以支持键盘快捷方式。 此键盘事件首先被调度到 NativeApplication。如果取消此事件,对其他对象没有影响(例如,NativeWindow 菜单快捷方式)。此事件发生在 keyDown 事件之后。 flash.display.InteractiveObject.keyUpkeyDown 用户按下某个键时调度。flash.events.KeyboardEvent.KEY_DOWNflash.events.KeyboardEvent 用户按下某个键时调度。NativeApplication 实例提供此事件以支持键盘快捷方式。 此键盘事件首先被调度到 NativeApplication。取消此事件的同时还会取消 NativeWindow 菜单快捷方式。该事件在 keyUp 事件之前发生。 flash.display.InteractiveObject.keyDownuserPresent 当操作系统在空闲一段时间后检测到鼠标或键盘活动时调度。flash.events.Event.USER_PRESENTflash.events.Event 当操作系统在空闲一段时间后检测到鼠标或键盘活动时调度。

注意: 此事件不在移动设备或用于电视的 AIR 设备上调度。

视为空闲的时间段可以使用 idleThreshold 属性来配置。用户已经处于空闲状态的时间可以从 timeSinceLastUserInput 属性确定。

idleThresholdtimeSinceLastUserInput
userIdle 当用户空闲时调度。flash.events.Event.USER_IDLEflash.events.Event 当用户空闲时调度。

使用 idleThreshold 属性指定在调度此事件之前用户处于空闲的时间。用户已经处于空闲状态的时间可以从 timeSinceLastUserInput 属性确定。

注意: 此事件不在移动设备或用于电视的 AIR 设备上调度。

idleThresholdtimeSinceLastUserInput
networkChange 当新的网络连接变为可用或现有网络连接中断时调度。flash.events.Event.NETWORK_CHANGEflash.events.Event 当新的网络连接变为可用或现有网络连接中断时调度。

networkChange 事件并不一定意味着主机已经联机或脱机;它可能只是从一种类型的连接过渡到另一种类型的连接。应用程序可以使用此事件来帮助优化监视远程资源可用性的任务。调度 networkChange 事件之时往往是验证任何远程资源可用性的绝佳时机。

注意:

  • 网络更改与此事件的传送之间可能有短暂延迟。
  • 在 Android 上,NativeApplication 对象可能对网络连接中的每个更改调度多个 networkChange 事件。
exiting 在启动应用程序的退出序列时调度。flash.events.Event.EXITINGflash.events.Event 在启动应用程序的退出序列时调度。

当操作系统启动应用程序退出时将调度 exiting 事件,例如,当用户在 Mac OS X 上发出 Cmd-Q 键序列,或当 NativeApplication 对象的 autoExit 属性为 true 且关闭最后一个应用程序窗口时。取消此事件将阻止应用程序退出。

用于电视的 AIR 设备从不调度 exiting 事件。

注意:调用 NativeApplication 的exit() 方法不会导致调度 exiting 事件。要在退出前警告各个组件,请在调用 exit() 之前调度事件 exiting

deactivate 将桌面焦点切换到不同的应用程序时调度。flash.events.Event.DEACTIVATEflash.events.Event 将桌面焦点切换到不同的应用程序时调度。 activate 当此应用程序变为活动桌面应用程序时调度。flash.events.Event.ACTIVATEflash.events.Event 当此应用程序变为活动桌面应用程序时调度。 browserInvoke 用户浏览器中运行的 SWF 文件调用应用程序时将调度此事件。flash.events.BrowserInvokeEvent.Browser_INVOKEflash.events.BrowserInvokeEvent 用户浏览器中运行的 SWF 文件调用应用程序时将调度此事件。

只有当应用程序在应用程序描述符文件中指定如下内容时才允许浏览器调用:

<allowBrowserInvocation>true</allowBrowserInvocation>
invoke 在调用应用程序时调度。flash.events.InvokeEvent.INVOKEflash.events.InvokeEvent 在调用应用程序时调度。

第二次调用某个应用程序时,不会启动该应用程序的另一个实例。第一个实例将接收附加的 invoke 事件。应用程序负责适当地处理随后的 invoke 事件。

注意:所有 invoke 事件都排队处理。如果为此事件注册了侦听器,该侦听器将接收队列中的所有事件以及任何新事件。排队的事件可以在任何新的 invoke 事件之前或之后传送。

activate 激活此应用程序。windowflash.display:NativeWindownull要与应用程序一起激活的窗口的 NativeWindow 对象。 激活此应用程序。

不支持 NativeWindow 类的平台上不支持此方法。

在由操作系统确定的某些情况下,此方法将不会激活应用程序。多数操作系统都限制应用程序自行激活的能力,以避免意外或恶意地使用户无法使用其他应用程序。

如果操作系统允许激活,则激活指定的窗口并将其放到桌面的前景;即放在其他应用程序窗口的前面。(如果 window 参数为 null,则会激活此应用程序的所有可视窗口。)

如果应用程序没有可视窗口,则 activate() 方法没有任何效果。

激活操作是同步的。

activateflash.events:Event激活状态发生变化时调度。 激活状态发生变化时调度。
addEventListener 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。typeString事件的类型。 listenerFunction处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果,如下面的示例所示: function(evt:Event):void

函数可以有任何名称。

useCaptureBooleanfalse 确定侦听器是运行于捕获阶段还是运行于目标和冒泡阶段。如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果 useCapturefalse,则侦听器只在目标或冒泡阶段处理事件。要在所有三个阶段都侦听事件,请调用 addEventListener 两次:一次将 useCapture 设置为 true,一次将 useCapture 设置为 false priorityint0事件侦听器的优先级。优先级由一个带符号的 32 位整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。 useWeakReferenceBooleanfalse确定对侦听器的引用是强引用,还是弱引用。强引用(默认值)可防止您的侦听器被当作垃圾回收。弱引用则没有此作用。

类级别成员函数不属于垃圾回收的对象,因此可以对类级别成员函数将 useWeakReference 设置为 true 而不会使它们受垃圾回收的影响。如果对作为嵌套内部函数的侦听器将 useWeakReference 设置为 true,则该函数将作为垃圾回收并且不再是永久函数。如果创建对该内部函数的引用(将该函数保存到另一个变量中),则该函数将不作为垃圾回收并仍将保持永久。

使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表中的所有节点上注册事件侦听器。

成功注册一个事件侦听器后,无法通过额外调用 addEventListener() 来更改其优先级。要更改侦听器的优先级,必须首先调用 removeListener()。然后,可以使用新的优先级再次注册该侦听器。

请记住,注册该侦听器后,如果继续调用具有不同 typeuseCapture 值的 addEventListener(),则会创建单独的侦听器注册。例如,如果首先注册 useCapture 设置为 true 的侦听器,则该侦听器只在捕获阶段进行侦听。如果使用同一个侦听器对象再次调用 addEventListener(),并将 useCapture 设置为 false,那么便会拥有两个单独的侦听器:一个在捕获阶段进行侦听,另一个在目标和冒泡阶段进行侦听。

不能只为目标阶段或冒泡阶段注册事件侦听器。这些阶段在注册期间是成对出现的,因为冒泡阶段只适用于目标节点的始祖。

如果不再需要某个事件侦听器,可调用 removeEventListener() 删除它,否则会产生内存问题。事件侦听器不会自动从内存中删除,因为只要调度对象存在,垃圾回收器就不会删除侦听器(除非 useWeakReference 参数设置为 true)。

复制 EventDispatcher 实例时并不复制其中附加的事件侦听器。(如果新近创建的节点需要一个事件侦听器,必须在创建该节点后附加该侦听器。)但是,如果移动 EventDispatcher 实例,则其中附加的事件侦听器也会随之移动。

如果在正在处理事件的节点上注册事件侦听器,则不会在当前阶段触发事件侦听器,但会在事件流的稍后阶段触发,如冒泡阶段。

如果从正在处理事件的节点中删除事件侦听器,则该事件侦听器仍由当前操作触发。删除事件侦听器后,决不会再次调用该事件侦听器(除非再次注册以备将来处理)。

clear 在具有焦点的显示对象上调用一个内部删除命令。true Boolean 在具有焦点的显示对象上调用一个内部删除命令。

如果具有焦点的对象不实现该命令,则将忽略此函数调用。只有源于 TextField 或 HTMLLoader 类的显示对象当前实现此命令。

注意:clear() 命令会删除所选的文本。如果未选择任何内容,则不会清除所有文本。

copy 在具有焦点的显示对象上调用一个内部复制命令。Boolean 在具有焦点的显示对象上调用一个内部复制命令。

如果组件不实现该命令,则将忽略此函数调用。只有源于 TextField 或 HTMLLoader 类的显示对象当前实现此命令。

cut 在具有焦点的显示对象上调用一个内部剪切命令。true Boolean 在具有焦点的显示对象上调用一个内部剪切命令。

如果组件不实现该命令,则将忽略此函数调用。只有源于 TextField 或 HTMLLoader 类的显示对象当前实现此命令。

dispatchEvent 将事件调度到事件流中。如果成功调度了事件,则值为 true。值 false 表示失败或对事件调用了 preventDefault()Booleaneventflash.events:Event调度到事件流中的 Event 对象。如果正在重新调度事件,则会自动创建此事件的一个克隆。在调度了事件后,其 target 属性将无法更改,因此您必须创建此事件的一个新副本以能够重新调度。 将事件调度到事件流中。事件目标是对其调用 dispatchEvent() 方法的 EventDispatcher 对象。 exit 终止此应用程序。errorCodeint0此应用程序退出时报告给操作系统的退出代码。 终止此应用程序。

exit() 方法的调用将会 返回;只有在当前正在执行的代码(比如当前的事件处理函数)完成后,关机序列才会开始。未处理的异步操作将被取消,可能完成,也可能未完成。

请注意,不会调度 exiting 事件。如果应用程序逻辑需要 exiting 事件,请调用 NativeApplication.nativeApplication.dispatchEvent(),并传入一个类型为 exiting 的 Event 对象。对于任何打开的窗口,NativeWindow 对象调度 closingclose 事件。调用 closing 事件对象的 preventDefault() 方法可防止退出应用程序。

注意:iOS 操作系统不支持此方法。

getDefaultApplication 获取用于打开具有指定扩展名的文件的默认应用程序。如果 extension 参数不包含在应用程序描述符中声明的文件扩展名之一。 ErrorError默认应用程序的路径。 StringextensionString包含需要关注的文件类型扩展名的 String(不带“.”)。 获取用于打开具有指定扩展名的文件的默认应用程序。

注意:此方法只能用于在应用程序描述符的 fileTypes 语句中声明的文件类型。

此方法不适用于用于电视的 AIR 设备。如果通过在应用程序描述符中声明的文件类型来调用它,将返回 null

applicationDescriptor
isSetAsDefaultApplication 指定此应用程序当前是否为打开具有指定扩展名的文件的默认应用程序。如果 extension 参数不包含在应用程序描述符中声明的文件扩展名之一。 ErrorError如果此应用程序是默认的应用程序,则为 trueBooleanextensionString包含需要关注的文件类型扩展名的 String(不带“.”)。 指定此应用程序当前是否为打开具有指定扩展名的文件的默认应用程序。

AIR 配置文件支持:所有桌面操作系统均支持此功能,但移动设备或用于电视的 AIR 设备不支持此功能。您可以使用 NativeApplication.supportsDefaultApplication 属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

applicationDescriptorsupportsDefaultApplication
paste 在具有焦点的显示对象上调用一个内部粘贴命令。true Boolean 在具有焦点的显示对象上调用一个内部粘贴命令。

如果组件不实现该命令,则将忽略此函数调用。只有源于 TextField 或 HTMLLoader 类的显示对象当前实现此命令。

removeAsDefaultApplication 撤消将此应用程序作为打开具有指定扩展名的文件的默认应用程序。如果 extension 参数不包含在应用程序描述符中声明的文件扩展名之一。 ErrorErrorextensionString包含需要关注的文件类型扩展名的 String(不带“.”)。 撤消将此应用程序作为打开具有指定扩展名的文件的默认应用程序。

注意:此方法只能用于在应用程序描述符的 fileTypes 语句中列出的文件类型。

applicationDescriptorsupportsDefaultApplication
removeEventListener 从 EventDispatcher 对象中删除侦听器。typeString事件的类型。 listenerFunction要删除的侦听器对象。 useCaptureBooleanfalse 指出是为捕获阶段还是为目标和冒泡阶段注册了侦听器。如果为捕获阶段以及目标和冒泡阶段注册了侦听器,则需要对 removeEventListener() 进行两次调用才能将这两个侦听器删除,一次调用将 useCapture() 设置为 true,另一次调用将 useCapture() 设置为 false 从 EventDispatcher 对象中删除侦听器。如果没有向 EventDispatcher 对象注册任何匹配的侦听器,则对此方法的调用没有任何效果。 selectAll 在具有焦点的显示对象上调用一个内部全选命令。true Boolean 在具有焦点的显示对象上调用一个内部全选命令。

如果组件不实现该命令,则将忽略此函数调用。只有源于 TextField 或 HTMLLoader 类的显示对象当前实现此命令。

setAsDefaultApplication 将此应用程序设置为打开具有指定扩展名的文件的默认应用程序。如果 extension 参数不包含在应用程序描述符中声明的文件扩展名之一。 ErrorErrorextensionString包含需要关注的文件类型扩展名的 String(不带“.”)。 将此应用程序设置为打开具有指定扩展名的文件的默认应用程序。

注意:此方法只能用于在应用程序描述符的 fileTypes 语句中声明的文件类型。

applicationDescriptorsupportsDefaultApplication
activeWindow 活动的应用程序窗口。flash.display:NativeWindow 活动的应用程序窗口。

如果活动的桌面窗口不属于此应用程序,或者没有活动的窗口,则 activeWindownull

不支持 NativeWindow 类的平台不支持此属性。

applicationDescriptor 此 AIR 应用程序的应用程序描述符文件内容。XML 此 AIR 应用程序的应用程序描述符文件内容。 下面的示例从应用程序描述符文件中读取 copyrightversion 元素。请注意,必须使用应用程序描述符 XML 中定义的默认命名空间。 var appDescriptor:XML = NativeApplication.nativeApplication.applicationDescriptor; var ns:Namespace = appDescriptor.namespace(); var appCopyright:String = appDescriptor.ns::copyright; var appVersion:String = appDescriptor.ns::version; trace("appId:", appCopyright); trace("version:", appVersion); applicationID 此应用程序的应用程序 ID。String 此应用程序的应用程序 ID。

此 ID 的值在应用程序描述符文件中设置。

autoExit 指定在关闭所有窗口后是否应自动终止应用程序。Boolean 指定在关闭所有窗口后是否应自动终止应用程序。

autoExittrue(默认值)时,如果关闭了所有窗口,则应用程序将终止。调度 exitingexit 事件。如果 autoExitfalse,则必须调用 NativeApplication.nativeApplication.exit() 才能终止应用程序。

不支持 NativeWindow 类的平台不支持此属性。

icon 应用程序图标。flash.desktop:InteractiveIcon 应用程序图标。

使用 NativeApplication.supportsDockIconNativeApplication.supportsSystemTrayIcon 可确定 icon 类。类型将是 InteractiveIcon 的子类之一。在 Mac® OS X 上,NativeApplication.icon 是一个类型为 DockIcon 的对象。在 Windows® 上,NativeApplication.icon 是一个类型为 SystemTrayIcon 的对象。如果不支持应用程序图标,则 NativeApplication.supportsDockIconNativeApplication.supportsSystemTrayIcon 均为 false,并且 icon 属性为 null

icon 对象是自动创建的,但不会使用图像数据自动初始化此对象。有些操作系统(如 Mac OS X)提供默认图像。在其他操作系统中(如 Windows),除非为图标分配了图像数据,否则不显示图标。要分配图标图像,请使用包含至少一个 BitmapData 对象的数组来设置 icon.bitmaps 属性。如果数组中包括多个 BitmapData 对象,则操作系统将选择大小最接近图标显示尺寸的图像,必要时缩放图像。

supportsDockIconflash.desktop.DockIconsupportsSystemTrayIconflash.desktop.SystemTrayIcon
idleThreshold 在调度 userIdle 事件之前无用户输入状态必须持续的秒数。int如果尝试将此属性设置为一个无效值。值的可接受范围为 5(5 秒)到 86,400(1 天),这两个值自身包括在内。 ArgumentErrorArgumentError 在调度 userIdle 事件之前无用户输入状态必须持续的秒数。

默认情况下,空闲阈值为 300 秒(5 分钟)。值的可接受范围为 5(5 秒)到 86,400(1 天),这两个值自身包括在内。

userIdleuserPresent
menu 应用程序菜单。flash.display:NativeMenu 应用程序菜单。

NativeApplication.nativeApplication.supportsMenutrue 时支持应用程序菜单。不是所有操作系统都支持应用程序菜单。例如,Mac OS X 支持应用程序菜单,但 Windows 或 Linux 不支持。允许在 NativeApplication.nativeApplication.supportsMenufalse 时将 NativeMenu 对象分配给此属性,但不执行任何操作。务必使用 NativeApplication.nativeApplication.supportsMenu 属性来确定操作系统是否支持应用程序菜单。使用其他方法(如 Capabilities.os)确定支持情况可能导致编程错误(如果没有考虑到某些可行的目标操作系统)。

AIR 配置文件支持:移动设备或用于电视的 AIR 设备不支持此功能。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

注意:在 Mac OS X 中,menu 属性引用操作系统提供的默认应用程序菜单。您可以通过添加和删除项目、子菜单以及添加事件侦听器来修改现有菜单结构。也可以通过将新 NativeMenu 对象分配给此 menu 属性来完全替换默认菜单。

flash.display.NativeMenuflash.display.NativeWindow.supportsMenu
nativeApplication NativeApplication 对象的单一实例。flash.desktop:NativeApplication如果由应用程序安全沙箱外部的内容访问。 ErrorError NativeApplication 对象的单一实例。 openedWindows 包含此应用程序的所有已打开的本机窗口的数组。Array 包含此应用程序的所有已打开的本机窗口的数组。

不支持 NativeWindow 类的平台不支持此属性。

publisherID 此应用程序的发布者 ID。String 此应用程序的发布者 ID。

此 ID 的值在应用程序发布者 ID 文件中设置,该文件在安装时从用于对应用程序签名的证书链中生成。

runtimePatchLevel 承载此应用程序的运行时的修补级别。uint 承载此应用程序的运行时的修补级别。 runtimeVersion 承载此应用程序的运行时的版本号。String 承载此应用程序的运行时的版本号。 startAtLogin 指定在当前用户登录时是否自动启动此应用程序。Boolean在 Windows 上,如果已经设置了另一个同名(但可执行文件的路径不同)的应用程序在此用户登录时启动。 IllegalOperationErrorflash.errors:IllegalOperationError如果未安装此应用程序(由 AIR Debug Launcher (ADL) 启动就属于这种情况)。 IllegalOperationErrorflash.errors:IllegalOperationError 指定在当前用户登录时是否自动启动此应用程序。

AIR 配置文件支持:所有桌面操作系统均支持此功能,但移动设备或用于电视的 AIR 设备不支持此功能。您可以使用 NativeApplication.supportsStartAtLogin 属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

startAtLogin 属性反映操作系统定义用于指定某个应用程序应该在用户登录时自动启动的机制的状态。用户可以使用操作系统的用户界面手动更改该状态。不管该状态上次是由 AIR 应用程序进行修改还是由操作系统进行更改,此属性都将反映当前状态。

supportsStartAtLogin
supportsDefaultApplication 表示当前平台是否支持 setAsDefaultApplication()、removeAsDefaultApplication() 和 isSetAsDefaultApplication()。Boolean 表示当前平台是否支持 setAsDefaultApplication()removeAsDefaultApplication()isSetAsDefaultApplication()

如果为 true,则上述方法将按预定操作。如果为 false,则 setAsDefaultApplication()removeDefaultApplication() 不执行任何操作,isSetAsDefaultApplication() 将返回 false

setAsDefaultApplication()removeAsDefaultApplication()isSetAsDefaultApplication()
supportsDockIcon 表示 AIR 是否支持当前操作系统上的停靠式应用程序图标。Boolean 表示 AIR 是否支持当前操作系统上的停靠式应用程序图标。

如果为 true,则 NativeApplication.icon 属性的类型为 DockIcon

Mac OS X 用户界面提供了一个应用程序“停靠栏”,其中包含正在运行或常用的应用程序的图标。

务必使用 NativeApplication.supportsDockIcon 属性来确定操作系统是否支持应用程序停靠图标。使用其他方法(如 Capabilities.os)确定支持情况可能导致编程错误(如果没有考虑到某些可行的目标操作系统)。

iconflash.desktop.DockIcon
supportsMenu 指定当前操作系统是否支持全局应用程序菜单栏。Boolean 指定当前操作系统是否支持全局应用程序菜单栏。

如果为 true,则可以使用 NativeApplication.menu 属性来定义(或访问)本机应用程序菜单。

务必使用 NativeApplication.supportsMenu 属性来确定操作系统是否支持应用程序菜单栏。使用其他方法(如 Capabilities.os)确定支持情况可能导致编程错误(如果没有考虑到某些可行的目标操作系统)。

menuflash.display.NativeWindow.supportsMenu
supportsStartAtLogin 表示当前平台是否支持 startAtLogin。Boolean 表示当前平台是否支持 startAtLogin。

如果为 true,startAtLogin 将按预定操作。如果为 false,startAtLogin 不起作用。

startAtLogin
supportsSystemTrayIcon 指定 AIR 是否支持当前操作系统上的系统任务栏图标。Boolean 指定 AIR 是否支持当前操作系统上的系统任务栏图标。

如果为 true,则 NativeApplication.icon 属性的类型为 SystemTrayIcon

Windows 用户界面提供任务栏的“系统托盘”区域,它的正式名称为通知区域,在其中可以显示应用程序图标。不显示默认图标。必须设置图标对象的 bitmaps 数组才能显示图标。

务必使用 NativeApplication.supportsSystemTrayIcon 属性来确定操作系统是否支持系统任务栏图标。使用其他方法(如 Capabilities.os)确定支持情况可能导致编程错误(如果没有考虑到某些可行的目标操作系统)。

iconflash.desktop.SystemTrayIcon
systemIdleMode 为应用程序提供一种防止用户界面进入“空闲”模式的方法。String 为应用程序提供一种防止用户界面进入“空闲”模式的方法。

SystemIdleMode 类的值,可影响主机系统的空闲模式行为。此属性仅对具有输入焦点的应用程序有效,只能从应用程序沙箱中运行的内容访问。

AIR 配置文件支持:移动设备支持此功能,但桌面操作系统或用于电视的 AIR 设备不支持此功能。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

flash.desktop.SystemIdleMode
timeSinceLastUserInput 距离上次用户输入的时间,以秒为单位。int 距离上次用户输入的时间,以秒为单位。 userIdleuserPresent
Updater Updater 类用于将当前运行的应用程序更新为不同的版本。Object Updater 类用于将当前运行的应用程序更新为不同的版本。要使用该类,请实例化一个 Updater 对象,然后调用其 update() 方法。

仅桌面配置文件支持 Updater 类。扩展桌面应用程序(使用本机安装程序安装的应用程序)不支持此功能,AIR 移动配置文件或用于电视的 AIR 配置文件也不支持此功能。检查 Updater.isSupported 属性。

扩展桌面应用程序(使用本机安装程序安装的应用程序)可以下载本机安装程序的新版本,并使用 File.openWithDefaultApplication() 方法启动它。

air.update.ApplicationUpdaterair.update.ApplicationUpdaterUIUpdater Updater 类的构造函数。 Updater 类的构造函数。请注意,update() 方法不是该类的静态成员。必须实例化一个 Updater 对象,然后对它调用 update() 方法。 update 使用指定的 AIR 文件中包含的应用程序版本更新当前运行的应用程序。在 ADL 中运行时调用该方法。 IllegalOperationErrorflash.errors:IllegalOperationErrorairFileflash.filesystem:File指向包含应用程序更新版本的 AIR 文件的 File 对象。 versionString新 AIR 文件中所需要的版本。要使更新成功,AIR 文件的应用程序描述符文件的主 application 元素的 version 属性中的字符串必须与此值匹配。 使用指定的 AIR 文件中包含的应用程序版本更新当前运行的应用程序。AIR 文件中的应用程序必须具有与当前正在运行的应用程序相同的应用程序标识符 (appID)。

调用此方法将导致当前应用程序退出(如同调用了 NativeApplication.exit() 方法)。这是必要的,因为 Adobe AIR 无法在应用程序正在运行时完全更新该应用程序。一旦成功安装了应用程序的新版本,该应用程序即会启动。如果运行时无法成功安装新版本(例如,如果新版本的应用程序 ID 与现有的版本不匹配),AIR 安装程序会向用户显示错误消息,然后重新启动旧版本。

无论更新是否成功,更新过程都会重新启动该应用程序。更新可能因为各种原因而失败,包括应用程序无法控制(比如用户没有足够的权限来安装该应用程序)等原因。应用程序应该谨慎检测失败,避免反复重新尝试相同的失败更新。所造成的无限循环必将禁用该应用程序。检查更新是否成功的方法之一是在启动更新前将当前版本号码写到一个文件中,当应用程序重新启动后将该号码与版本号码进行比较。

在使用 AIR Debug Launcher (ADL) 应用程序测试某个应用程序时,调用 update() 方法会导致 IllegalOperationError 异常。

在 Mac OS 中,要安装某一应用程序的更新版本,用户需要具有足够的系统权限才能将新版本安装到应用程序目录中。在 Windows 或 Linux 中,用户需要具有管理权限。

如果应用程序的更新版本要求 运行时的更新版本,则应安装新的运行时版本。要更新运行时,用户需要具有计算机的管理员权限。

注意:出于安全方面的原因,需要指定 version 参数。通过要求应用程序验证 AIR 文件中的版本号码,应用程序不会在不经意间安装较旧的版本,较旧的版本可能包含在安全性方面已经得到修复的易受攻击性。

请注意,update() 方法不是 该类的静态方法。可以实例化一个 Updater 对象并调用该对象的 update() 方法。 import flash.fileSystem.File; import flash.desktop.Updater; var updater:Updater = new Updater(); var airFile:File = File.applicationStorageDirectory.resolvePath("Example Application.air"); var version:String = "2.01"; updater.update(airFile, version);
air.update.ApplicationUpdaterair.update.ApplicationUpdaterUI
isSupported 如果 Updater 类在当前平台上可用,则 isSupported 属性设置为 true,否则设置为 false。Boolean 如果 Updater 类在设备当前平台上可用,则 isSupported 属性设置为 true,否则设置为 false
SystemTrayIcon SystemTrayIcon 类表示 Windows&#xAE; 任务栏通知区域(系统任务栏)样式的图标。任务栏图标。 flash.desktop:InteractiveIcon SystemTrayIcon 类表示 Windows® 任务栏通知区域(系统任务栏)样式的图标。

AIR 配置文件支持:桌面操作系统支持此功能,但移动设备或用于电视的 AIR 设备不支持此功能。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

不是所有桌面操作系统都有系统任务栏图标。检查 NativeApplication.supportsSystemTrayIcon 以确定在当前系统上是否支持系统任务栏图标。

无法创建 SystemTrayIcon 类的实例。从“全局的”NativeApplication 对象的 icon 属性中获取表示系统任务栏图标的对象。

如果支持系统任务栏图标,则 icon 将为 SystemTrayIcon 类型。否则,icon 的类型将是 InteractiveIcon 的另一个子类,通常是 DockIcon。

重要说明:在 AIR 不支持系统任务栏图标的操作系统上尝试对 NativeApplication.icon 对象调用 SystemTrayIcon 类方法将生成运行时异常。

flash.desktop.NativeApplication.iconflash.desktop.NativeApplication.supportsSystemTrayIconflash.desktop.DockIconrightClick 在鼠标右键单击时由此 SystemTrayIcon 对象调度。flash.events.ScreenMouseEvent.RIGHT_CLICKflash.events.ScreenMouseEvent 在鼠标右键单击时由此 SystemTrayIcon 对象调度。 rightMouseUp 在鼠标右键弹起时由此 SystemTrayIcon 对象调度。flash.events.ScreenMouseEvent.RIGHT_MOUSE_UPflash.events.ScreenMouseEvent 在鼠标右键弹起时由此 SystemTrayIcon 对象调度。 rightMouseDown 在鼠标右键按下时由此 SystemTrayIcon 对象调度。flash.events.ScreenMouseEvent.RIGHT_MOUSE_DOWNflash.events.ScreenMouseEvent 在鼠标右键按下时由此 SystemTrayIcon 对象调度。 click 在鼠标单击时由此 SystemTrayIcon 对象调度。flash.events.ScreenMouseEvent.CLICKflash.events.ScreenMouseEvent 在鼠标单击时由此 SystemTrayIcon 对象调度。 mouseUp 在鼠标弹起时由此 SystemTrayIcon 对象调度。flash.events.ScreenMouseEvent.MOUSE_UPflash.events.ScreenMouseEvent 在鼠标弹起时由此 SystemTrayIcon 对象调度。 mouseDown 在鼠标按下时由此 SystemTrayIcon 对象调度。flash.events.ScreenMouseEvent.MOUSE_DOWNflash.events.ScreenMouseEvent 在鼠标按下时由此 SystemTrayIcon 对象调度。 MAX_TIP_LENGTH 允许的系统任务栏图标工具提示长度。63Number 允许的系统任务栏图标工具提示长度。 bitmaps 作为不同大小的 BitmapData 对象数组的图标图像。Array 作为不同大小的 BitmapData 对象数组的图标图像。

当在给定的操作系统上下文中显示图标时,将使用数组中最接近所显示大小的位图(必要时进行缩放)。常用的大小包括 16x16、32x32、48x48 和 128x128。(在不远的将来,某些操作系统将可以使用 512x512 像素的图标。)

在某些上下文中,如果没有为 bitmaps 属性分配任何数据,则操作系统可以使用默认的系统图标。在其他上下文中,不显示图标。

要设置或更改图标外观,请将 BitmapData 对象数组分配给 bitmaps 属性:

icon.bitmaps = new Array(icon16x16.bitmapData, icon128x128.bitmapData);

直接修改 bitmaps 数组没有任何效果。

要清除图标图像,请为 bitmaps 属性分配一个空数组。

注意:在为图标加载图像文件时,PNG 文件格式通常提供最佳 Alpha 混合。GIF 格式只支持打开或关闭透明度(无混合)。JPG 格式完全不支持透明度。

height 图标的当前显示高度,以像素为单位。int 图标的当前显示高度,以像素为单位。

某些图标上下文支持动态大小。height 属性表示从当前上下文的 bitmaps 数组中选择的图标的高度。如果操作系统已缩放了该图标,则实际显示高度可能会有所不同。

menu 系统任务栏图标菜单。flash.display:NativeMenu 系统任务栏图标菜单。 tooltip 为系统任务栏图标弹出的工具提示。String 为系统任务栏图标弹出的工具提示。如果该字符串比 SystemTrayIcon.MAX_TIP_LENGTH 长,则将截断提示。 width 图标的当前显示宽度,以像素为单位。int 图标的当前显示宽度,以像素为单位。

某些图标上下文支持动态大小。width 属性表示从当前上下文的 bitmaps 数组中选择的图标的宽度。如果操作系统已缩放了该图标,则实际显示宽度可能会有所不同。

Clipboard Clipboard 类提供一个容器,用于通过剪贴板传输数据和对象。Object Clipboard 类提供一个容器,用于通过剪贴板传输数据和对象。通过静态 generalClipboard 属性可以访问操作系统剪贴板。

Clipboard 对象可以包含多种格式的相同信息。通过以多种格式提供信息,可以增加另一个应用程序能够使用该信息的机会。使用 setData()setDataHandler() 方法向 Clipboard 对象添加数据。

标准格式是:

  • BITMAP_FORMAT:一个 BitmapData 对象(仅限 AIR)
  • FILE_LIST_FORMAT:File 对象的数组(仅限 AIR)
  • HTML_FORMAT:HTML 格式的字符串数据
  • TEXT_FORMAT:字符串数据
  • RICH_TEXT_FORMAT:包含 RTF 格式数据的 ByteArray
  • URL_FORMAT:URL 字符串(仅限 AIR)

ClipboardFormats 类中定义了用作标准格式的名称的这些常量。

当传输到操作系统或从操作系统接收传输时,将在 ActionScript 数据类型和本机操作系统剪贴板类型之间自动转换标准格式。

可以使用应用程序定义的格式将 ActionScript 对象添加到 Clipboard 对象中。如果对象可序列化,则可以使用对该对象的引用和该对象的克隆。对象引用只在原始应用程序中有效。

如果将待传输的信息转换成特殊格式时运算成本很高,则可以提供执行该转换的函数名称。当且仅当接收组件或应用程序能够读取该格式时,才能调用此函数。使用 setDataHandler() 方法将延迟呈现函数添加到 Clipboard 对象中。请注意,在某些情况下,操作系统在放置操作发生前调用此函数。例如,当使用处理函数为从 AIR 应用程序拖到文件系统的文件提供数据时,只要拖动手势一离开 AIR 应用程序,操作系统就立即调用数据处理函数 — 通常在下载或创建文件数据时导致意外暂停。

关于 AIR 应用程序的注意事项:为 HTML 拖放以及复制和粘贴事件调度的事件对象所引用的剪贴板对象与 AIR Clipboard 对象的类型不同。JavaScript 剪贴板对象在 AIR 开发人员指南中进行了说明。

关于 Flash Player 应用程序的注意事项:在 Flash Player 10 中,从剪贴板执行的粘贴操作首先要求发生用户事件(例如,按下“粘贴”命令的快捷键或用鼠标单击上下文菜单中的“粘贴”命令)。只有在 InteractiveObject 已收到粘贴事件并对其进行操作的情况下,Clipboard.getData() 才会返回剪贴板内容。任何其他情况下都不能成功调用 Clipboard.getData()。在 AIR 中,对于应用程序沙箱之外的内容适用同样的限制。

在 Linux 上,关闭 AIR 应用程序时,不会保留剪贴板数据。

对于 Adobe AIR,下面的示例使用 ClipboardExample 类通过系统剪贴板将一个字符串在变量之间进行复制。执行下列步骤可完成该任务:
  1. 将数据(在本例中为一个字符串)写入到 Clipboard.generalClipboard 中。
  2. Clipboard.generalClipboard 读取剪贴板内容。

注意:由于对访问剪贴板数据具有安全限制,因此该示例在 Flash Player 中不适用。在 Flash Player 中,只能在 paste 事件处理函数中调用 Clipboard 对象的 getData() 方法。

package { import flash.display.Sprite; import flash.desktop.Clipboard; import flash.desktop.ClipboardFormats; import flash.desktop.ClipboardTransferMode; public class ClipboardExample extends Sprite { public function ClipboardExample() { var sally:String = "Sally"; var person:String; copy(sally); person = paste(); trace(person); //traces: "Sally" } private function copy(text:String):void { Clipboard.generalClipboard.clear(); Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, text); } private function paste():String { if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)) { return String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT)); } else { return null; } } } }
flash.desktop.NativeDragManagerflash.desktop.ClipboardFormatsflash.desktop.ClipboardTransferModeClipboard 创建空 Clipboard 对象。Flash Player 中不支持 new Clipboard(),原因是在 Flash Player 中只能使用操作系统的剪贴板。对于涉及操作系统剪贴板的复制并粘贴操作,请使用 Clipboard.generalClipboard 对象,而不要创建新 Clipboard 对象。不会在 AIR 应用程序中引发错误。 IllegalOperationErrorflash.errors:IllegalOperationError 创建空 Clipboard 对象。

创建 Clipboard 对象以将本机拖放手势数据保留在 Adobe AIR 中。Clipboard 对象只能用于一个拖放手势,无法重复使用。

不要为复制粘贴操作创建 Clipboard 对象。而应使用单一 Clipboard.generalClipboard 对象。

下面的示例创建一个用于 NativeDragManager 类的新剪贴板。

注意:对于涉及操作系统剪贴板的复制并粘贴操作,请使用 Clipboard.generalClipboard 对象,而不要创建新剪贴板。

import flash.desktop.Clipboard; var clipboard:Clipboard = new Clipboard();
generalClipboard
clearData 删除指定格式的数据表示形式。在此上下文中不允许调用 generalClipboard.clearData()。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。 SecurityErrorSecurityErrorformatString要删除的数据格式。 删除指定格式的数据表示形式。 下面的示例将清除系统剪贴板中具有格式 ClipboardFormats.TEXT_FORMAT 的任何数据: import flash.desktop.ClipboardFormats; Clipboard.generalClipboard.clearData(ClipboardFormats.TEXT_FORMAT); clear 从此 Clipboard 对象中删除所有数据表示形式。在此上下文中不允许调用 generalClipboard.clear()。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。 SecurityErrorSecurityError 从此 Clipboard 对象中删除所有数据表示形式。 下面的示例清除系统剪贴板: Clipboard.generalClipboard.clear(); getData 如果指定格式的数据存在,则获取剪贴板数据。transferMode 不是在 ClipboardTransferMode 类中定义的名称之一。 ErrorError范围中不再存在请求的 Clipboard 对象(仅限 AIR)。 IllegalOperationErrorflash.errors:IllegalOperationError在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在 paste 事件的处理过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。 SecurityErrorSecurityError一个类型与该数据格式相对应的对象。 ObjectformatString要返回的数据格式。格式字符串可以包含 ClipboardFormats 类中定义的标准名称之一,也可以包含一个应用程序定义的名称。 transferModeStringoriginalPreferred指定在访问应用程序定义的数据格式时是返回一个引用还是返回序列化副本。该值必须是 ClipboardTransferMode 类中定义的名称之一。对于标准数据格式忽略此值,但始终会返回一个副本。 如果指定格式的数据存在,则获取剪贴板数据。

Flash Player 要求在 paste 事件的处理函数中调用 getData()。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。

访问标准数据格式时,将以相应 Flash 数据类型的新对象的形式返回数据。

在访问应用程序定义的格式时,transferMode 参数的值确定是返回对原始对象的引用,还是返回包含原始对象的序列化副本的匿名对象。如果指定了 originalPreferredclonePreferred 模式,则当首选的版本不可用时,Flash Player 或 AIR 将返回替代版本。如果指定了 originalOnlycloneOnly 模式,则当请求的版本不可用时,Flash Player 或 AIR 将返回 null

下面的示例将读取系统剪贴板中的文本(如果可用): import flash.desktop.ClipboardFormats; var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
setData()flash.desktop.ClipboardFormatsflash.desktop.ClipboardTransferMode
hasFormat 检查指定格式的数据在此 Clipboard 对象中是否存在。作用域内不再存在请求的 Clipboard 对象。 IllegalOperationErrorflash.errors:IllegalOperationError在此上下文中不允许从剪贴板读取或写入剪贴板。 SecurityErrorSecurityError如果存在指定格式的数据,则为 trueBooleanformatString要检查的格式类型. 检查指定格式的数据在此 Clipboard 对象中是否存在。

使用 ClipboardFormats 类中的常量引用标准格式名称。

下面的示例测试系统剪贴板以确定文本格式的数据是否可用: if(Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){ //do something }
flash.desktop.ClipboardFormats
setDataHandler 添加对产生要传输的数据的处理函数的引用。formathandlernullTypeErrorTypeError范围中不再存在请求的 Clipboard 对象(仅限 AIR)。 IllegalOperationErrorflash.errors:IllegalOperationError在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。 SecurityErrorSecurityError如果成功设置了处理函数,则为 true;否则为 falseBooleanformatString返回要传输的数据的函数。 handlerFunction数据的格式。 serializableBooleantrue如果由 handler 返回的对象可以序列化(和反序列化),则指定 true 添加对产生要传输的数据的处理函数的引用。

使用处理函数将数据的创建或呈现延迟到实际访问数据时。

处理函数必须返回适合指定格式的相应数据类型:

格式返回类型ClipboardFormats.TEXT_FORMATStringClipboardFormats.HTML_FORMATStringClipboardFormats.URL_FORMATString(仅限 AIR)ClipboardFormats.RICH_TEXT_FORMATByteArrayClipboardFormats.BITMAP_FORMATBitmapData(仅限 AIR)ClipboardFormats.FILE_LIST_FORMATFile 数组(仅限 AIR)ClipboardFormats.FILE_PROMISE_LIST_FORMATFile 数组(仅限 AIR)自定义格式名称非 void

当且仅当读取指定格式的数据时才会调用该处理函数。请注意,在某些情况下,操作系统在放置操作发生前调用此函数。例如,当使用处理函数为从 AIR 应用程序拖到文件系统的文件提供数据时,只要拖动手势一离开 AIR 应用程序,操作系统就立即调用数据处理函数 — 通常在下载或创建文件数据时导致意外暂停。您也可以使用 URLFilePromise 来完成此任务。

请注意,在添加处理函数时和读取数据时之间,基础数据可能会发生更改,除非应用程序采取一些措施来保护数据。多次读取剪贴板中由处理函数表示的数据时发生的行为没有保证。剪贴板可能返回由第一个函数调用生成的数据,也可能再次调用该函数。不要依赖任一行为。

在 Adobe AIR 的应用程序沙箱中,可随时调用 setDataHandler()。在其他上下文中,只能以响应用户生成的事件(例如,按键或鼠标单击)为目的调用 setDataHandler()

要直接向此 Clipboard 对象添加数据,请改用 setData() 方法。如果使用相同的格式名称调用 setData()setDataHandler() 方法,则永不调用该处理函数。

注意:在 Mac OS 上,如果将 format 参数设置为 ClipboardFormats.URL_FORMAT,则仅当该处理函数返回有效 URL 时才会传送该 URL。否则,将清空 Clipboard 对象(且调用 getData() 会返回 null)。

下面的示例通过延迟数据函数向系统剪贴板添加一个随机数。 import flash.desktop.ClipboardFormats; Clipboard.generalClipboard.setDataHandler(ClipboardFormats.TEXT_FORMAT, randomNumberGenerator); public function randomNumberGenerator():String{ return Math.random().toString(); }
setData()flash.desktop.ClipboardFormatsflash.desktop.URLFilePromise
setData 使用指定的数据格式添加要传输的信息的表示形式。作用域内不再存在请求的 Clipboard 对象(这种情况可发生在为拖放操作创建的剪贴板中)。 IllegalOperationErrorflash.errors:IllegalOperationError在此上下文中不允许从剪贴板读取或写入剪贴板。在 Flash Player 中,只有在处理用户事件(如按键或鼠标单击)的过程中才能成功调用此方法。在 AIR 中,此限制仅适用于应用程序安全沙箱外部的内容。 SecurityErrorSecurityErrorformatdatanullTypeErrorTypeError如果成功设置了数据,则为 true;否则为 false。在 Flash Player 中,如果 format 是不受支持的 ClipboardFormats 成员,则返回 false。(Flash Player 不支持 ClipboardFormats.URL_FORMATClipboardFormats.FILE_LIST_FORMATClipboardFormats.FILE_PROMISE_LIST_FORMATClipboardFormats.BITMAP_FORMAT)。 BooleanformatString数据的格式。 dataObject要添加的信息。 serializableBooleantrue为可以序列化(和反序列化)的对象指定 true 使用指定的数据格式添加要传输的信息的表示形式。

在 Adobe AIR 应用程序沙箱中,可随时调用 setData()。在其他上下文中,只能以响应用户生成的事件(例如,按键或鼠标单击)为目的调用 setData()

可以将相同信息的不同表示形式以不同格式添加到剪贴板,这可提高其他组件或应用程序利用可用数据的能力。例如,图像可作为位图数据添加以供图像编辑应用程序使用,也可作为 URL 和编码的 PNG 文件添加以传输到本机文件系统。

data 参数必须是适用于指定格式的相应数据类型:

格式类型说明ClipboardFormats.TEXT_FORMATString字符串数据。ClipboardFormats.HTML_FORMATStringHTML 字符串数据ClipboardFormats.URL_FORMATStringURL 字符串(仅限 AIR)ClipboardFormats.RICH_TEXT_FORMATByteArrayRTF 数据ClipboardFormats.BITMAP_FORMATBitmapData位图数据(仅限 AIR)ClipboardFormats.FILE_LIST_FORMATFile 的数组文件数组(仅限 AIR)自定义格式名称任意对象引用和序列化克隆

自定义格式名称不能以“air:”或“flash:”开头。为了避免在使用自定义格式时发生命名冲突,您可能希望使用应用程序 ID 或包名称作为格式的前缀,如“com.example.applicationName.dataPacket”。

当在应用程序内或 AIR 应用程序之间传输时,serializable 参数确定引用和副本是否都可用,或是否只有对象的引用才可用。将 serializable 设置为 true 可使该数据对象的引用和副本都可用。将 serializable 设置为 false 则只使对象引用可用。对象引用仅在当前应用程序中有效,因此,将 serializable 设置为 false 还意味着使用该格式的数据将对其他 Flash Player 或 AIR 应用程序不可用。组件可以通过在访问该格式的数据时设置适当的剪贴板传输模式来选择获取该对象的引用或获取该对象的副本。

注意:当在支持的应用程序外部粘贴或拖动数据时,标准格式总是转换为本机格式,因此 serializable 参数值不影响非基于 Flash 应用程序的标准格式数据的可用性。

要延迟呈现某一格式的数据,请改用 setDataHandler() 方法。如果同时使用 setData()setDataHandler() 方法添加具有相同格式名称的数据表示方式,则永远也不会调用该处理函数。

注意:在 Mac OS 上,如果将 format 参数设置为 ClipboardFormats.URL_FORMAT,则仅当该 URL 有效时才会将其传送。否则,将清空 Clipboard 对象(且调用 getData() 会返回 null)。

下面的示例以文本格式和 HTML 格式向系统剪贴板中添加内容: import flash.desktop.ClipboardFormats; var htmlString:String = "<html><body>Body content</body></html>"; Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, urlString); Clipboard.generalClipboard.setData(ClipboardFormats.HTML_FORMAT, urlString);
setDataHandler()getData()flash.desktop.ClipboardFormatsflash.desktop.ClipboardTransferMode
formats 一个字符串数组,其中包含此 Clipboard 对象中的可用数据格式的名称。Array 一个字符串数组,其中包含此 Clipboard 对象中的可用数据格式的名称。

用作标准格式名称的字符串常量在 ClipboardFormats 类中定义。应用程序定义的其他字符串也可以用作格式名称,以将数据作为对象传输。

下面的示例读取系统剪贴板的 formats 数组: var availableFormats:Array = Clipboard.generalClipboard.formats;
flash.desktop.ClipboardFormats
generalClipboard 操作系统剪贴板。flash.desktop:Clipboard 操作系统剪贴板。

粘贴到系统剪贴板中的任何数据均对其他应用程序可用。这可能包括网络浏览器中运行的不安全的远程代码。

注意:在 Flash Player 10 应用程序中,从剪贴板执行的粘贴操作会首先需要发生用户事件(例如,按下“粘贴”命令的快捷键或用鼠标单击上下文菜单中的“粘贴”命令)。只有在 InteractiveObject 已收到粘贴事件并对其进行操作的情况下,Clipboard.getData() 才会返回剪贴板内容。任何其他情况下都不能成功调用 Clipboard.getData()。在 AIR 中,对于应用程序沙箱之外的内容适用同样的限制。

generalClipboard 对象是自动创建的。不能为此属性分配 Clipboard 的另一个实例。改用 getData()setData() 方法可以读取现有对象中的数据和将数据写入现有对象。

在向剪贴板中写入新数据之前,应始终清理剪贴板,以确保擦除所有格式的旧数据。

无法将 generalClipboard 对象传递到 AIR NativeDragManager。为 AIR 应用程序中的本机拖放操作创建新的 Clipboard 对象。

写入到操作系统的剪贴板中: import flash.desktop.ClipboardFormats; var copy:String = "A string to copy to the system clipboard."; Clipboard.generalClipboard.clear(); Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, copy); 从操作系统的剪贴板中读取: import flash.desktop.ClipboardFormats; var pasteData:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
supportsFilePromise 表示在客户端系统上是否支持文件承诺剪贴板格式。Boolean 表示在客户端系统上是否支持文件承诺剪贴板格式。
NotificationType NotificationType 类定义在 DockIcon bounce() 方法的 priority 参数和 NativeWindow notifyUser() 方法的 type 参数中使用的常量。Object NotificationType 类定义在 DockIcon bounce() 方法的 priority 参数和 NativeWindow notifyUser() 方法的 type 参数中使用的常量。 flash.desktop.DockIcon.bounce()flash.display.NativeWindow.notifyUser()CRITICAL 指定通知警告实质上是关键性的,用户应立即进行处理。criticalString 指定通知警告实质上是关键性的,用户应立即进行处理。 INFORMATIONAL 指定通知警告实质上是信息性的,用户可以安全地将其忽略。informationalString 指定通知警告实质上是信息性的,用户可以安全地将其忽略。 IFilePromise IFilePromise 接口定义 AIR Runtime 用于读取 file promise 的数据的接口。 IFilePromise 接口定义 AIR 运行时用于读取 file promise 的数据的接口。

file promise 是拖放剪贴板格式,允许用户拖动 AIR 应用程序外尚不存在的文件。AIR 使用 IFilePromise 接口定义的方法和属性访问要在放置 file promise 时写入的数据。

将 file promise 放置在合适的目标上后,AIR 会调用 IFilePromise open() 方法。此方法的实现必须将数据提供程序作为实现 IDataInput 接口的对象进行返回。提供程序对象可能是一个内置类(例如,ByteArray、FileStream、Socket 和 URLStream),也可能是一个自定义类。

如果以同步方式访问数据提供程序中的数据(例如,使用 ByteArray 访问),则 AIR 将读取 IDataInput bytesAvailable 属性所表示的数据量,然后将其写入目标文件。

如果以异步方式访问数据提供程序中的数据(例如,使用 Socket 访问),则 AIR 将使用提供程序调度的事件控制读取数据和将数据写入文件的过程。在每个 progress 事件中读取数据,直到接收到 complete 或 close 事件。运行时侦听下列事件(但是数据提供程序不需要调度每个事件):

  • Event.OPEN
  • ProgressEvent.PROGRESS
  • ProgressEvent.SOCKET_DATA
  • Event.COMPLETE
  • Event.CLOSE
  • IOErrorEvent.IOERROR
  • SecurityErrorEvent.SECURITY_ERROR
  • HTTPStatusEvent.HTTP_STATUS
  • HTTPStatusEvent.HTTP_RESPONSE_STATUS

自定义数据提供程序类应在存在可用数据时调度 progress 事件或 socketData 事件。同样,应在读取了所有请求的数据后调度 completeclose 事件。错误事件会通知运行时数据传输已失败且应终止。应适当地调度其他事件以帮助进行错误处理和调试应用程序逻辑。

IFilePromise 定义的方法仅为 AIR 运行时在完成拖放操作后进行调用。开发人员通常不应从他们自己的代码调用这些方法。

注意:air.desktop 库中提供的 URLFilePromise 类可实现 IFilePromise 接口并将 URLStream 用作数据提供程序。air.desktop 库作为单独的 SWF 和 SWC 文件包含在 AIR SDK 中。

flash.desktop.Clipboardflash.desktop.ClipboardFormatsflash.desktop.NativeDragManagerclose 当它读取完所有数据时由 AIR 运行时调用。 当它读取完所有数据时由 AIR Runtime 调用。

在调用 close() 后,将不会对由 open() 返回的对象引用调用任何方法。可安全地破坏数据提供程序对象。

open 返回数据提供程序对象。IDataInput,实现 IDataInput 接口的对象。如果以异步方式提供数据,则返回的对象也必须实现 IEventDispatcher 接口。 flash.utils:IDataInput 返回数据提供程序对象。

数据提供程序对象必须实现 IDataInput 接口,该接口定义读取数据的方法。如果 IFilePromise isAsync 属性返回 true,则数据提供程序对象也必须实现 IEventDispatcher 接口。可将下列内置类用作数据提供程序:

  • ByteArray(同步)
  • FileStream(同步或异步)
  • 套接字(异步)
  • URLStream(异步)

您还可以提供实现所需接口(或扩展实现这些接口的其他类)的自定义类的对象。

reportError 由 AIR Runtime 调用向 IFilePromise 实现通知,在从数据提供程序对象读取数据时发生错误。eflash.events:ErrorEvent包含详细错误信息的错误事件。 由 AIR 运行时调用向 IFilePromise 实现通知,在从数据提供程序对象读取数据时发生错误。 isAsync 表示是否支持异步数据传输。Boolean 表示是否支持异步数据传输。

如果为 true,则由 open() 方法返回的数据提供程序对象必须实现 IEventDispatcher 接口(或扩展实现此接口的类)。由 progresssocketData 事件驱动的数据传输。AIR 会等待这些数据进程事件直至调度 completeclose 事件为止。

如果 isAsync 返回 false,则 AIR 运行时会假定所有数据可立即使用。在这种情况下,运行时将读取数据提供程序对象的 bytesAvailable 属性以确定可用的数据量,并同步读取该数据量。

relativePath 将由文件承诺创建的文件的相对路径和文件名。String如果相对路径使用 .. 快捷键遍历拖放目标的一个或多个父目录。 ArgumentErrorArgumentError 将由文件承诺创建的文件的相对路径和文件名。

此属性必须提供有效的路径,否则在放置 file promise 时会引发参数错误。

路径可以包括子目录(根据放置位置进行解析)。根据需要创建子目录。当包括子目录时,使用 File.separator 常量为当前操作系统插入相应的路径分隔符。不允许使用 .. 快捷键导航到父目录。如果尝试使用此快捷键,将引发参数错误。如果从路径中去掉无效的文件系统字符,将不会引发错误。

注意:若要允许客户端代码设置路径,可以实现带有签名的 setter 函数:function set relativePath( value:String ):void

NativeProcessStartupInfo 此类提供了用于启动主机操作系统上的进程的基本信息。Object 此类提供了用于启动主机操作系统上的进程的基本信息。构建该类并将其传递给 NativeProcess 对象的 start() 方法。

本机进程访问只对使用本机安装程序安装的 AIR 应用程序(扩展桌面配置文件中的应用程序)可用。

NativeProcess.html#start()NativeProcessStartupInfo 构建空 NativeProcessStartupInfo 对象。 构建空 NativeProcessStartupInfo 对象。 arguments 命令行参数,将在启动时传递给进程。 命令行参数,将在启动时传递给进程。

无论 arguments 矢量中的各字符串中包含什么字符,这些字符串都将作为单独的参数被传递给可执行文件。换句话说,这是完全的一一对应;不会发生重新解释。AIR 自动对字符串中需要转义的任何字符(例如,空格字符)进行转义。

executable File 对象,引用主机操作系统上的可执行文件。flash.filesystem:File如果指定的值是 null、如果它引用一个目录或引用一个不存在的文件。 ArgumentErrorArgumentError File 对象,引用主机操作系统上的可执行文件。这应该是可执行文件的完整路径,包含所需的任何扩展。

注意:在 Mac OS 上,若要启动应用程序包中的可执行文件,请确保使 File 对象的路径包含可执行文件(位于包内)的完整路径,而不只是该 app 文件的路径。

workingDirectory File 对象,引用新本机进程的初始工作目录。flash.filesystem:File如果此值不存在或不是一个目录 ArgumentErrorArgumentError File 对象,引用新本机进程的初始工作目录。如果指定的值中 isDirectory 为 false,将引发 ArgumentError。
SystemIdleMode SystemIdleMode 类为系统空闲行为提供常量值。Object SystemIdleMode 类为系统空闲行为提供常量值。这些常量在 NativeApplication 类的 systemIdleMode 属性中使用。 flash.desktop.NativeApplication.systemIdleModeKEEP_AWAKE 防止系统进入空闲模式。keepAwakeString 防止系统进入空闲模式。

在 Android 上,应用程序必须在应用程序描述符中为 DISABLE_KEYGUARD 和 WAKE_LOCK 指定 Android 权限,否则操作系统会忽略此设置。

NORMAL 系统采用正常的“空闲用户”行为。normalString 系统采用正常的“空闲用户”行为。
ClipboardTransferMode ClipboardTransferMode 类定义一些常量,它们表示用作 Clipboard.getData() 方法的 transferMode 参数值的模式。定义用于剪贴板传输模式的常量。 Object ClipboardTransferMode 类定义一些常量,它们表示用作 Clipboard.getData() 方法的 transferMode 参数值的模式。

传输模式提供有关访问剪贴板中所包含的对象时是返回一个引用还是返回一个副本的提示。

flash.desktop.Clipboard.getData()CLONE_ONLY Clipboard 对象应仅返回副本。cloneOnlyString Clipboard 对象应仅返回副本。 CLONE_PREFERRED 如果可用,Clipboard 对象应返回副本;如果不可用,则返回引用。clonePreferredString 如果可用,Clipboard 对象应返回副本;如果不可用,则返回引用。 ORIGINAL_ONLY Clipboard 对象应仅返回引用。originalOnlyString Clipboard 对象应仅返回引用。 ORIGINAL_PREFERRED 如果可用,Clipboard 对象应返回引用;如果不可用,则返回副本。originalPreferredString 如果可用,Clipboard 对象应返回引用;如果不可用,则返回副本。
NativeDragManager NativeDragManager 类协调拖放操作。Object NativeDragManager 类协调拖放操作。使用本机拖放 API 可以使用户在 AIR 应用程序和本机操作系统之间、两个应用程序之间以及一个应用程序内不同组件之间拖动数据。

可以传输以下几种数据:

  • 位图
  • 文件
  • 文本
  • URL 字符串
  • 序列化对象
  • 对象引用(仅在源应用程序内有效)

注意:所有 NativeDragManager 成员都是静态的。不需要创建此类的实例。

拖放操作是一种用户界面手势,从用户单击某一可见项并将其拖动到别处开始。在执行拖动手势期间,当手势越过 AIR 应用程序窗口时,显示列表上的交互式对象将调度本机拖动事件。这些事件的处理函数可以调用 NativeDragManager 类的方法,以表示是否可以在对象上放置拖动项。作为响应,NativeDragManager 会更改鼠标指针以向用户提供反馈。

AIR 配置文件支持:用于电视的 AIR 设备不支持此功能。所有移动设备上也不支持它。您可以使用 NativeDragManager.isSupported 属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

拖动动作

拖放手势通常用于三种类型的操作,这些操作称为动作。由于这些动作的含义取决于应用程序的上下文,因此,运行时不会针对动作强制执行任何特定行为。不过,适当地实现这些动作会改善用户使用应用程序时的体验。

可能的动作包括:

  • 复制 -- 制作数据的副本,保持原始数据不变。(当在应用程序内拖动对象时,应该注意复制原始对象本身,而不要复制对该对象的引用。)
  • 移动 -- 将数据从其原始上下文中移动到由放置目标定义的上下文中,比如将一个项目从一个列表移动到另一个列表中。
  • 链接 -- 创建对原始数据的引用或原始数据的快捷方式,将项目保留在其原始上下文中。

通过在开始拖动操作的 NativeDragManager.doDrag() 调用中提供 allowedActions 参数,可以为拖动手势设置允许的动作。如果未提供 allowedActions 参数,则允许所有动作。潜在的拖动目标可以使用 NativeDragEvent 对象的 allowedActions 属性来检查哪些动作是允许的,并且不应接受仅允许不兼容动作的拖动(但运行时并不强制执行这一点)。

如果拖动目标只实现一个动作,则此对象可以设置 nativeDragEnternativeDragOver 事件处理函数中的 NativeDragManager 的 dropAction 属性。拖动之前设置该属性将允许拖动管理器更新鼠标指针,以表示支持的动作并防止用户使用功能键选择不兼容的动作。如果指定的动作不是允许的动作之一,则不允许拖动,即使目标调用 acceptDrop() 方法。

在接受拖动时,潜在的拖动目标应通过设置 NativeDragManager.dropAction 属性以响应 nativeDragDrop 事件来指定所选的动作。此动作将被报告回 nativeDragComplete 事件中的启动显示对象。如果拖动目标未设置动作,则会从允许的动作中选择一个默认动作,这些动作的优先顺序为:复制、移动、链接。启动对象负责更新其内部状态以响应所选的动作。

用作动作名称的字符串常量在 NativeDragActions 类中定义。

事件序列

拖动手势从调用 mouseDownmouseMove 事件处理函数内的 NativeDragManager.doDrag() 方法开始,然后继续执行以下事件序列以响应用户动作:

  • nativeDragStart 事件 -- 在调用 NativeDragManager.doDrag() 时,作为参数传递给该方法的交互式对象将成为启动器对象,并调度 nativeDragStart 事件。
  • nativeDragUpdate 事件 -- 在执行拖动时,启动器对象将继续调度 nativeDragUpdate 事件。
  • nativeDragEnternativeDragOver 事件 -- 当拖动手势越过交互式对象时,该对象将调度 nativeDragEnter 事件。当拖动手势停留在交互式对象上时,该对象将继续调度 nativeDragOver 事件。在响应这些事件中的任一事件时,作为潜在放置目标的对象应检查事件对象的属性,以确定它是否可以接受放置。如果数据格式和允许的动作适当,则这些事件的事件处理函数必须调用 NativeDragManager.acceptDrop(),传入对将作为拖动目标的显示对象(通常是调度 nativeDragEnternativeDragOver 事件的对象)的引用。然后用户可以将拖动项拖动到目标上。
  • nativeDragExit 事件 -- 当拖动手势移出交互式对象时,该对象将调度 nativeDragExit 事件。如果先前对 NativeDragManager.acceptDrop() 方法的调用已经将该对象指定为拖动目标,该调用将不再有效,如果手势再次进入交互式对象,则必须再次调用 acceptDrop()
  • nativeDragDrop 事件 -- 当用户在目标显示对象上松开鼠标按键时,该对象将调度 nativeDragDrop 事件。此事件的处理函数可以访问该事件对象的 transferable 属性中的数据,并应设置 NativeDragManager.dropAction 属性以表示启动器对象应采取哪种动作。
  • nativeDragComplete -- 当用户在拖动手势结束并释放鼠标时,启动器对象将调度 nativeDragComplete 事件(无论放置本身是否已完成)。此事件的处理函数可以检查事件对象的 dropAction 属性以确定应该对其内部数据状态进行何种修改(如果有),比如从列表中删除已拖动出去的项目。如果 dropActionNativeDragActions.NONE,则拖动项目没有放到符合条件的目标上。

应用程序之间的手势

当拖动手势从非 AIR 应用程序进入 AIR 应用程序窗口时,不会有启动器对象调度 nativeDragStartnativeDragComplete 事件。在该手势期间调度的事件将遵循与在同一 AIR 应用程序内开始和结束的手势相同的模式。

当拖动手势离开 AIR 应用程序窗口时,不会有目标对象调度 nativeDragEnternativeDragOvernativeDragDrop 事件。启动器对象仍将调度 nativeDragComplete 事件,该事件会报告由本机操作系统设置的拖动动作(如果不接受放置,则报告 none)。

如果拖动手势从一个 AIR 应用程序移动到另一个 AIR 应用程序,启动器和目标显示对象将照常在其各自的应用程序内调度事件。

传输信息

在拖放手势期间传输的数据包含在 Clipboard 对象中。此数据对象是使用启动拖动手势的 NativeDragManager.doDrag() 方法添加到拖动操作中的。潜在的放置目标可以通过本机拖动事件对象的 clipboard 属性访问 Clipboard 对象。一旦拖动操作开始后,只能在 NativeDragEvent 的事件处理函数中访问 Clipboard 对象。对该对象的任何其它访问尝试都将生成运行时错误。

安全注意事项

启动器和潜在目标对象的安全沙箱确定可以何种方式访问所拖动的数据。如果两个对象在同一个沙箱中,则可以从任一 NativeDragEvent 对象访问数据。不过,如果启动器和目标对象在不同的沙箱中,则只能在 nativeDragDrop 事件的事件处理函数内的目标沙箱中访问数据。其它本机拖动事件处理函数仍然可以访问事件的 clipboard 属性中所引用的 Clipboard 对象,以确定可以使用哪些数据格式,但调用 clipboard.getData() 方法会生成安全错误。

flash.events.NativeDragEventflash.desktop.NativeDragActionsflash.desktop.NativeDragOptionsflash.desktop.ClipboardacceptDragDrop 通知 NativeDragManager 对象:指定的目标交互式对象可以接受与当前拖动事件对应的放置。targetflash.display:InteractiveObject 通知 NativeDragManager 对象:指定的目标交互式对象可以接受与当前拖动事件对应的放置。

只有在指定目标对象上具有可处理拖动项中至少一种数据格式和至少一种允许动作的 nativeDragDrop 处理函数时,才应该调用此方法。

只能在 nativeDragEnternativeDragOver 事件处理函数内调用此函数。

doDrag 启动拖放操作。dragInitiatorflash.display:InteractiveObject通常是从中开始拖动手势的对象。接收 nativeDragStartnativeDragComplete 事件。 clipboardflash.desktop:Clipboard所拖动数据的容器对象。 dragImageflash.display:BitmapDatanull在拖动手势期间在鼠标指针下显示的可选代理图像。如果为 null,则不显示任何图像。 offsetflash.geom:Pointnull鼠标热点和拖动图像左上角之间的偏移。负坐标会将图像相对于该热点向上和向左移动。如果为 null,拖动图像的左上角将位于鼠标热点。 allowedActionsflash.desktop:NativeDragOptionsnull限制此操作允许的拖放动作。如果为 null,则允许所有动作。 启动拖放操作。

启动拖动操作:

  1. 创建一个新的 Clipboard 对象。
  2. 以一种或多种格式添加要传输的数据。
  3. 或者,创建一个 BitmapData 对象作为拖动期间的代理图像。
  4. 或者,创建一个 NativeDragOptions 对象以限制此操作中允许的动作。(如果 allowedActions 参数保留为 null,则允许所有动作。)
  5. 调用 NativeDragManager.doDrag()

启动器对象在调用此方法后将调度一个 nativeDragStart 事件,在拖动进行过程中将调度几个 nativeDragStart 事件,而当用户释放鼠标按钮以结束拖动手势时将调度一个 nativeDragComplete 事件。nativeDragComplete 事件的处理函数可以检查该事件的 dropAction 属性以确定拖放操作是否成功完成。如果 dropActionNativeDragActions.NONE,则拖动项目没有放到符合条件的目标上。

只能从 mouseDownmouseMove 事件处理函数内调用此方法。(如果在响应 mouseMove 事件时调用,鼠标按钮也必须处于按下状态。)

flash.desktop.NativeDragActions
dragInitiator 传递给启动拖动操作的 NativeDragManager.doDrag() 调用的交互式对象。flash.display:InteractiveObject 传递给启动拖动操作的 NativeDragManager.doDrag() 调用的交互式对象。 dropAction 放置目标指定的拖动操作。String 放置目标指定的拖动操作。

dropAction 属性应该在 nativeDragDrop 事件的处理函数中设置。如果在 nativeDragComplete 之前未设置 dropAction,则 NativeDragManager 将用列表中允许的第一个动作设置此值:复制、移动或链接(按此顺序)。

flash.desktop.NativeDragActions
isDragging 报告拖动操作当前是否正在进行中。Boolean 报告拖动操作当前是否正在进行中。 isSupported 如果当前平台支持 NativeDragManager 类,则 isSupported 属性设置为 true,否则设置为 false。Boolean报告是否支持本机拖放操作。 如果当前平台支持 NativeDragManager 类,则 isSupported 属性设置为 true,否则设置为 false
NativeDragOptions NativeDragOptions 类定义一些常量,它们表示拖放操作中允许的拖放动作的名称。Object NativeDragOptions 类定义一些常量,它们表示拖放操作中允许的拖放动作的名称。

拖动动作是反馈机制的一部分,旨在使启动对象和目标对象在拖放交换中得以协调。动作只是对操作系统的一个提示。实现适当的行为取决于事务中涉及的拖动启动器和目标对象。

启动对象应只允许它支持的动作。例如,只有在启动对象的内部逻辑将在目标接受移动动作的放置时删除源数据的情况下,启动对象才应允许移动 动作。

新 NativeDragOptions 对象的所有属性都初始化为 true(允许所有动作)。

flash.desktop.NativeDragManagerflash.events.NativeDragEventtoString 构建一个包含此 NativeDragOptions 对象的当前设置的字符串。字符串 字符串中此对象的当前设置。 String 构建一个包含此 NativeDragOptions 对象的当前设置的字符串。 allowCopy 允许使用放置目标来复制拖动的数据。trueBoolean 允许使用放置目标来复制拖动的数据。 allowLink 允许使用放置目标来创建指向拖动的数据的链接。trueBoolean 允许使用放置目标来创建指向拖动的数据的链接。 allowMove 允许使用放置目标来移动拖动的数据。trueBoolean 允许使用放置目标来移动拖动的数据。
DockIcon DockIcon 类表示 Mac OS X&#xAE; 样式的停靠图标。Mac OS X 样式停靠图标。 flash.desktop:InteractiveIcon DockIcon 类表示 Mac OS X® 样式停靠图标。

AIR 配置文件支持:所有桌面操作系统均支持此功能,但移动设备或用于电视的 AIR 设备不支持此功能。您可以使用 NativeApplication.supportsDockIcon 属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持

可以使用 DockIcon 类来更改标准图标的外观,例如使图标具有动画效果或添加信息性图形。也可以向停靠图标菜单中添加项目。您添加的菜单项将显示在标准菜单项之上。

无法创建 DockIcon 类的实例。从 NativeApplication.icon 获取表示操作系统停靠图标的对象。

不是所有操作系统都有停靠图标。检查 NativeApplication.supportsDockIcon 以确定在当前系统上是否支持停靠图标。如果支持停靠图标,则 NativeApplication.icon 属性为 DockIcon 类型。否则,NativeApplication.icon 的类型为 InteractiveIcon 的另一个子类,通常为 SystemTrayIcon。

重要说明:在 AIR 不支持停靠图标的操作系统上尝试对 NativeApplication.icon 对象调用 DockIcon 类方法会生成运行时异常。

下例加载了一系列图像,通过停靠图标菜单启动计时器后,将使图标图像具有动画效果。(要使示例能够运行,必须提供一组图标图像并更改 imageURLs 数组中的 URL。) package { import flash.desktop.DockIcon; import flash.desktop.NativeApplication; import flash.display.Loader; import flash.display.NativeMenu; import flash.display.NativeMenuItem; import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; import flash.net.URLRequest; import flash.utils.Timer; public class AnimatedDockIcon extends Sprite { private var imageURLs:Array = ['gfx/frame01.png', 'gfx/frame02.png', 'gfx/frame03.png', 'gfx/frame04.png']; private var images:Array = new Array(); private var animTimer:Timer = new Timer(100); public function AnimatedDockIcon() { NativeApplication.nativeApplication.autoExit = false; addEventListener(Event.COMPLETE, loadImages); loadImages(); animTimer.addEventListener(TimerEvent.TIMER,advanceFrame); addMenu(); stage.nativeWindow.close(); } private function addMenu():void{ var menu:NativeMenu = new NativeMenu(); var start:NativeMenuItem = menu.addItem(new NativeMenuItem("Start animation")); var stop:NativeMenuItem = menu.addItem(new NativeMenuItem("Stop animation")); start.addEventListener(Event.SELECT, startTimer); stop.addEventListener(Event.SELECT, stopTimer); var dockIcon:DockIcon = NativeApplication.nativeApplication.icon as DockIcon; dockIcon.menu = menu; } private function startTimer(event:Event):void{ animTimer.start(); } private function stopTimer(event:Event):void{ animTimer.stop(); } private var currentFrame:int = 0; private function advanceFrame(event:Event):void{ if(currentFrame < images.length){ currentFrame++; } else { currentFrame = 0; } NativeApplication.nativeApplication.icon.bitmaps = [images[currentFrame]]; } private function loadImages(event:Event = null):void{ if(event != null){ images.push(event.target.content.bitmapData); } if(imageURLs.length > 0){ var urlString:String = imageURLs.pop(); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadImages, false, 0, true); loader.load(new URLRequest(urlString)); } else { var complete:Event = new Event(Event.COMPLETE,false,false); dispatchEvent(complete); } } } }
flash.desktop.NativeApplication.iconflash.desktop.NativeApplication.supportsDockIconflash.desktop.SystemTrayIconbounce 通知用户已发生了可能需要引起注意的事件。NotificationType.Informational priorityStringinformational回弹停靠的紧急程度。 通知用户已发生了可能需要引起注意的事件。

当且仅当应用程序处于后台时,调用此方法将回弹停靠图标。如果 priorityNotificationType.Informational,则图标将回弹一次。如果 priorityNotificationType.Critical,则图标将一直回弹,直到应用程序处于前景中。

在下例中,在用户激活应用程序之前,将一直回弹停靠图标: import flash.display.DockIcon; import flash.display.NotificationType; import flash.desktop.NativeApplication; if(NativeApplication.supportsDockIcon){ var dockIcon:DockIcon = NativeApplication.nativeApplication.icon As DockIcon; dockIcon.bounce(NotificationType.CRITICAL); }
flash.desktop.NotificationTypeflash.display.NativeWindow.notifyUser()
bitmaps 作为不同大小的 BitmapData 对象数组的图标图像。Array作为不同大小的 BitmapData 对象数组的图标图像。 作为不同大小的 BitmapData 对象数组的图标图像。

当在给定的操作系统上下文中显示图标时,将使用数组中最接近所显示大小的位图(必要时进行缩放)。常用的大小包括 16x16、32x32、48x48 和 128x128。(在不远的将来,某些操作系统将可以使用 512x512 像素的图标。)

在某些上下文中,如果没有为 bitmaps 属性分配任何数据,则操作系统可以使用默认的系统图标。在其他上下文中,不显示图标。

要设置或更改图标外观,请将 BitmapData 对象数组分配给 bitmaps 属性:

icon.bitmaps = new Array(icon16x16.bitmapData, icon128x128.bitmapData);

直接修改 bitmaps 数组没有任何效果。

要清除图标图像,请为 bitmaps 属性分配一个空数组。

注意:在为图标加载图像文件时,PNG 文件格式通常提供最佳 Alpha 混合。GIF 格式只支持打开或关闭透明度(无混合)。JPG 格式完全不支持透明度。

height 图标的当前显示高度,以像素为单位。int 图标的当前显示高度,以像素为单位。

某些图标上下文支持动态大小。height 属性表示从当前上下文的 bitmaps 数组中选择的图标的高度。如果操作系统已缩放了该图标,则实际显示高度可能会有所不同。

menu 此停靠图标的系统提供菜单。flash.display:NativeMenu 此停靠图标的系统提供菜单。

菜单中的任何项目都将显示在标准项目之上。标准项目无法修改或删除。

下面的示例将一个项目添加到停靠图标菜单: import flash.desktop.NativeApplication; import flash.events.Event; private function createDockIconMenu():void{ if(NativeApplication.supportsDockIcon){ var dockIcon:DockIcon = NativeApplication.nativeApplication.icon as DockIcon; var dockMenu:NativeMenu = new NativeMenu(); var command:NativeMenuItem = dockMenu.addItem(new NativeMenuItem("Command")); command.addEventListener(Event.SELECT, onCommand); dockIcon.menu = dockMenu; } } private function onCommand(event:Event):void{ //do command... }
width 图标的当前显示宽度,以像素为单位。int 图标的当前显示宽度,以像素为单位。

某些图标上下文支持动态大小。width 属性表示从当前上下文的 bitmaps 数组中选择的图标的宽度。如果操作系统已缩放了该图标,则实际显示宽度可能会有所不同。

Icon Icon 类表示操作系统图标。flash.events:EventDispatcher Icon 类表示操作系统图标。

Icon 对象只有一个属性 bitmaps,该属性是 BitmapData 对象的数组。一次只显示一个图像。操作系统选择大小最接近图标当前显示尺寸的图像,必要时进行缩放。

flash.filesystem.File.iconflash.display.BitmapDatabitmaps 作为不同大小的 BitmapData 对象数组的图标图像。Array 作为不同大小的 BitmapData 对象数组的图标图像。

当在给定的操作系统上下文中显示图标时,将使用数组中最接近所显示大小的位图(必要时进行缩放)。常用的大小包括 16x16、32x32、48x48 和 128x128。(在不远的将来,某些操作系统将可以使用 512x512 像素的图标。)

在某些上下文中,如果没有为 bitmaps 属性分配任何数据,则操作系统可以使用默认的系统图标。在其他上下文中,不显示图标。

要设置或更改图标外观,请将 BitmapData 对象数组分配给 bitmaps 属性:

icon.bitmaps = new Array(icon16x16.bitmapData, icon128x128.bitmapData);

直接修改 bitmaps 数组没有任何效果。

要清除图标图像,请为 bitmaps 属性分配一个空数组。

注意:在为图标加载图像文件时,PNG 文件格式通常提供最佳 Alpha 混合。GIF 格式只支持打开或关闭透明度(无混合)。JPG 格式完全不支持透明度。

flash.filesystem.File.iconflash.display.BitmapData