套件 | 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 | ||
[靜態]
為指定的擴充功能 ID 與內容類型建立 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 |
為指定的擴充功能 ID 與內容類型建立 ExtensionContext 實體。
參數
extensionID:String — 擴充功能的擴充功能 ID。此 ID 的值相同於擴充功能描述檔中的 id 元素。應用程式開發人員也會在應用程式描述檔的 extensionID 元素中使用此值。所有的擴充功能共用一個單一、全域的命名空間。因此,為了避免名稱衝突,請反轉 DNS 標記法作為擴充功能 ID。
| |
contextType:String — 擴充功能的內容類型。根據內容類型,原生實作可執行不同的初始化。這些差異可以包括指定 ActionScript 端可呼叫的不同組原生函數的原生實作。內容類型的值必須是擴充功能 ActionScript 端與原生端都可接受的任何字串。簡單的擴充功能通常不會使用不同的內容類型。在這些情況下,為 contextType 值傳送空白字串 "" 或 null 。
|
ExtensionContext — 新的 ExtensionContext 實體。如果沒有具有指定之 extensionID 值的擴充功能可供使用,或者找不到或無法執行指定之 extensionID 的 extension.xml 文件中指定的內容初始設定式函數,則傳回 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 — 擴充功能的擴充功能 ID。此 ID 的值與 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 for TV 裝置中使用 extendedTV
裝置描述檔的應用程式則是從 AIR 2.5 開始支援此項功能。
原生擴充功能結合了下列項目:
- 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, 03:47 PM Z