包 | flash.external |
类 | public final class ExtensionContext |
继承 | ExtensionContext EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
ExtensionContext 类还提供了一个静态方法 getExtensionDirectory()
,用于访问扩展在设备上的安装目录。它还提供了一个 actionScriptData
属性,用于与扩展的本机实现共享数据。
注意:使用 extendedDesktop
配置文件的 AIR 应用程序可使用 NativeProcess 类来执行本机进程。
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
actionScriptData : Object
与此上下文关联的 ActionScript 对象(如果有)。 | ExtensionContext | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object |
方法 | 由以下参数定义 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
调用由 functionName 指定的本机函数。 | ExtensionContext | ||
[静态]
为给定的扩展标识符和上下文类型创建 ExtensionContext 实例。 | ExtensionContext | ||
将事件调度到事件流中。 | EventDispatcher | ||
此 ExtensionContext 实例的处理。 | ExtensionContext | ||
[静态]
返回设备上安装扩展的目录。 | ExtensionContext | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
事件 | 摘要 | 由以下参数定义 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | |||
ExtensionContext 类提供一个接口,用于在 Adobe AIR 的本机扩展的本机实现中调用函数。 | ExtensionContext |
actionScriptData | 属性 |
actionScriptData:Object
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
与此上下文关联的 ActionScript 对象(如果有)。
可以将任何 ActionScript 对象与 ExtensionContext 实例关联。本机实现也可以获取和设置此 ActionScript 对象。因此,可以使用 actionScriptData
在扩展的 ActionScript 端和本机端之间共享数据。
还可以将 actionScriptData
的值设置为 null
。
实现
public function get actionScriptData():Object
public function set actionScriptData(value:Object):void
引发
IllegalOperationError — 已对此 ExtensionContext 实例调用方法 dispose() 。
|
call | () | 方法 |
public function call(functionName:String, ... args):Object
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
调用由 functionName
指定的本机函数。任何其他参数都将传递到本机函数。
参数
functionName:String — 表示本机实现中的函数的名称。此名称不一定是本机函数的实际名称,它可以是在扩展的 ActionScript 端和本机端之间约定的任何名称。
| |
... args — 本机函数的参数列表。这些参数可以是任何原始类型的 ActionScript 对象或 ActionScript 类对象。参数的类型和顺序在扩展的 ActionScript 端和本机端之间约定。
|
Object — 由本机函数返回的值。如果本机函数未返回值或返回无效的对象引用,则返回值为 null 。
|
引发
ArgumentError — 不存在与 functionName 给定的名称对应的函数。
| |
IllegalOperationError — 已对此 ExtensionContext 实例调用 dispose() 方法。如果本机函数返回无效的对象引用,也会引发此错误。
|
createExtensionContext | () | 方法 |
public static function createExtensionContext(extensionID:String, contextType:String):ExtensionContext
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
为给定的扩展标识符和上下文类型创建 ExtensionContext 实例。
参数
extensionID:String — 扩展的扩展标识符。此标识符的值与扩展描述符文件中的 id 元素的值相同。应用程序开发人员还将此值用于应用程序描述符文件中的 extensionID 元素。所有扩展共享一个全局命名空间。因此,为避免名称冲突,请对扩展标识符使用反向 DNS 表示法。
| |
contextType:String — 扩展的上下文类型。根据上下文类型,本机实现可执行不同的初始化操作。这些不同的操作可以包括本机实现指定 ActionScript 端可调用的另外不同的一组可用本机函数。上下文类型的值是扩展的 ActionScript 端和本机端之间约定的任意字符串。不同的上下文类型通常不需要简单扩展。在这些情况下,将为 contextType 值传递空字符串 "" 或 null 。
|
ExtensionContext — 新 ExtensionContext 实例。如果没有具有指定 extensionID 值的扩展,或者找不到或无法运行 extension.xml 文档中为指定 extensionID 指定的上下文初始化函数,则返回 null 。
|
引发
ArgumentError — extensionID 参数为 null 或者非有效扩展 ID。
|
dispose | () | 方法 |
public function dispose():void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
此 ExtensionContext 实例的处理。
运行时通知本机实现,这可以释放任何关联的本机资源。调用 dispose()
后,代码无法调用 call()
方法且无法获取或设置 actionScriptData
属性。
getExtensionDirectory | () | 方法 |
public static function getExtensionDirectory(extensionID:String):File
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
返回设备上安装扩展的目录。
有时,扩展包括要从该扩展的 ActionScript 代码访问的资源,例如图像。有时,代码也需要扩展描述符文件中提供的信息,例如扩展版本号。可以使用此方法访问扩展的基本目录。
不管扩展位于设备中的任何位置,该扩展的文件与该扩展的基本目录的相对位置始终不变。使用由此方法返回的 File 实例,可以导航到扩展附带的特定文件并进行操作。
扩展目录具有以下结构:
extension base directory/ platform independent files META-INF/ ANE/ extension.xml platform name/ platform-dependent files and directories
扩展目录位置取决于扩展是通过应用程序绑定方式提供还是通过设备绑定方式提供,如下所述:
- 对于应用程序绑定方式,扩展目录位于应用程序目录中。
- 对于设备绑定方式,扩展目录位置取决于设备。
对于 iOS 设备的本机扩展,在使用 getExtensionDirectory()
时存在例外情况。这些扩展的资源不在扩展目录中。而是位于顶级应用程序目录中。
参数
extensionID:String — 扩展的扩展标识符。此标识符的值与 createExtensionContext() 中的 extensionID 参数的值相同。
|
File — 安装扩展的目录的 File 实例。
|
引发
TypeError — 参数 extensionID 不得为 null。
| |
ArgumentError — 为参数 extensionID 指定的值无效。目录不存在。
|
status | 事件 |
flash.events.StatusEvent
属性 StatusEvent.type =
flash.events.StatusEvent.STATUS
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.5 |
ExtensionContext 类提供一个接口,用于在 Adobe AIR 的本机扩展的本机实现中调用函数。此类只能在作为扩展的一部分的 ActionScript 类中使用。
AIR 配置文件支持:在 AIR 3 中启动的移动设备支持此功能。在 AIR 3 中启动的桌面设备上,使用 extendedDesktop
设备配置文件的应用程序也支持此功能。在 AIR 2.5 中启动的 AIR for TV 设备上,使用 extendedTV
设备配置文件的应用程序支持此功能。
本机扩展为以下组合:
- ActionScript 类。
- 本机代码。本机代码是在没有运行时的设备上执行的代码。例如,C 语言编写的代码就是本机代码。
您可以出于以下目的创建本机扩展:
- 为 AIR 应用程序提供对特定设备的功能的访问。
- 重用现有本机代码。
- 使用本机代码比 ActionScript 代码提供更有效的处理。
在 扩展的 ActionScript 端使用 ExtensionContext 类,以访问扩展的本机端。首先,创建 ExtensionContext 类的实例。为此,请调用静态方法 ExtensionContext.createExtensionContext()
。
创建 ExtensionContext 实例后,使用该实例的 call()
方法调用本机函数。
对 ExtensionContext 实例完成操作后,调用 dispose()
以释放任何关联的本机资源。运行时垃圾回收器在处理此实例时调用 dispose()
,而不显式调用 dispose()
。显式调用 dispose()
通常比等待垃圾回收器执行操作的时间要早得多。
ExtensionContext 实例可侦听当扩展的本机实现中发生某些异步事件时由本机代码调度的 StatusEvent 事件。由于 ExtensionContext 类派生自 EventDispatcher,因此它可以依次调度事件。
定义status
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
code | 对象状态的描述。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
level | 消息类别,例如 "status" 、"warning" 或 "error" 。 |
target | 报告其状态的对象。 |
Tue Jun 12 2018, 11:04 AM Z