blob: 2ddff2461c09ea602a9f2aad9fb3dd348b2f856c [file]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<apiPackage xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/" id="flash.external" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiPackage/apiPackage "><apiName class="- topic/title reference/title apiRef/apiName ">flash.external</apiName><apiDetail class="- topic/body reference/refbody apiRef/apiDetail "/><apiClassifier languages="" id="flash.external:ExtensionContext" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiClassifier/apiClassifier "><apiName class="- topic/title reference/title apiRef/apiName ">ExtensionContext</apiName><shortdesc class="- topic/shortdesc ">
ExtensionContext クラスには、ActionScript 拡張のネイティブ実装で関数を呼び出すためのインターフェイスが用意されています。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="AIR" version="2.5" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiClassifierDetail class="- topic/body reference/refbody apiRef/apiDetail apiClassifier/apiClassifierDetail "><apiClassifierDef class="- topic/section reference/section apiRef/apiDef apiClassifier/apiClassifierDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiFinal class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiFinal "/><apiBaseClassifier class="- topic/xref reference/xref apiRef/apiRelation apiClassifier/apiBaseClassifier ">flash.events:EventDispatcher</apiBaseClassifier></apiClassifierDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
ExtensionContext クラスには、ActionScript 拡張のネイティブ実装で関数を呼び出すためのインターフェイスが用意されています。このクラスは、拡張に含まれる ActionScript クラスにのみ使用できます。
<p class="- topic/p ">AIR プロファイルのサポート:<i class="+ topic/ph hi-d/i "/>この機能は、<codeph class="+ topic/ph pr-d/codeph ">extendedTV</codeph> デバイスプロファイルを使用するアプリケーションのテレビ用 AIR でのみサポートされます。</p>
<p class="- topic/p ">1 つの ActionScript 拡張は次の 2 つの要素で構成されています。</p>
<p class="- topic/p "><ul class="- topic/ul "><li class="- topic/li ">ActionScript クラス</li><li class="- topic/li ">ネイティブコードネイティブコードは、デバイス上のランタイム外で実行されるコードです。例えば、C で記述されたコードはネイティブコードです。</li></ul></p>
<p class="- topic/p ">ActionScript 拡張を作成する目的としては、AIR アプリケーションからデバイス固有の機能へのアクセスを実現することなどが考えられます。他にも、既存ネイティブコードを再利用したい場合や、ネイティブコードを使用して ActionScript コードよりも効率的に処理を実行したい場合などに ActionScript 拡張を作成することがあります。ActionScript 拡張を記述、ビルドおよびパッケージ化する方法について詳しくは、PDF ドキュメント『<xref href="http://www.adobe.com/go/learn_air_as_extensions_en" class="- topic/xref ">Adobe AIR 用 ActionScript 拡張の開発</xref>』を参照してください。
</p>
<p class="- topic/p ">ActionScript 拡張の ActionScript 側からネイティブ側にアクセスするには、ExtensionContext クラスを使用します。まず、ExtensionContext クラスのインスタンスを作成します。これを行うには、静的メソッド <codeph class="+ topic/ph pr-d/codeph ">ExtensionContext.createExtensionContext()</codeph> を呼び出します。</p>
<p class="- topic/p ">ExtensionContext インスタンスの作成後、インスタンスの <codeph class="+ topic/ph pr-d/codeph ">call()</codeph> メソッドを使用してネイティブ関数を呼び出します。</p>
<p class="- topic/p ">ExtensionContext インスタンスの処理が完了したら、<codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> を呼び出して、関連するネイティブリソースをすべて解放します。<codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> を明示的に呼び出さないと、インスタンスの破棄時にランタイムガベージコレクターによって <codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> が呼び出されます。<codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> の明示的な呼び出しは、通常、ガベージコレクター処理の待機よりもはるかに早く発生します。</p>
<p class="- topic/p ">ExtensionContext インスタンスは、拡張のネイティブ実装で何らかの非同期イベントが発生するときにネイティブコードが発行する StatusEvent イベントをリッスンできます。ExtensionContext クラスは EventDispatcher から派生するので、結果としてイベントを発行できます。</p>
<p class="- topic/p ">拡張がデバイスにインストールされているディレクトリにアクセスするために、また、ExtensionContext クラスには静的メソッド <codeph class="+ topic/ph pr-d/codeph ">getExtensionDirectory()</codeph> が用意されています。また、拡張のネイティブ実装でデータを共有するために、プロパティ <codeph class="+ topic/ph pr-d/codeph ">actionScriptData</codeph> も用意されています。</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">注意:</b><codeph class="+ topic/ph pr-d/codeph ">extendedDesktop</codeph> プロファイルを使用する AIR アプリケーションでは、NativeProcess クラスを使用してネイティブプロセスを実行できます。</p>
</apiDesc></apiClassifierDetail><related-links class="- topic/related-links "><link href="http://www.adobe.com/go/learn_air_as_extensions_en" class="- topic/link "><linktext class="- topic/linktext ">Adobe AIR 用 ActionScript 拡張の開発</linktext></link><link href="flash.desktop.xml#NativeProcess" class="- topic/link "><linktext class="- topic/linktext ">flash.desktop.NativeProcess</linktext></link></related-links><apiOperation id="flash.external:ExtensionContext:call" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiOperation/apiOperation "><apiName class="- topic/title reference/title apiRef/apiName ">call</apiName><shortdesc class="- topic/shortdesc ">
functionName で指定されているネイティブ関数を呼び出します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="AIR" version="2.5" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiOperationDetail class="- topic/body reference/refbody apiRef/apiDetail apiOperation/apiOperationDetail "><apiOperationDef class="- topic/section reference/section apiRef/apiDef apiOperation/apiOperationDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc "><codeph class="+ topic/ph pr-d/codeph ">functionName</codeph> で指定されている名前に関連する関数はありません。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">ArgumentError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">ArgumentError</apiOperationClassifier></apiException><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">メソッド <codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> は、この ExtensionContext インスタンスで呼び出し済みです。このエラーは、ネイティブ関数が無効なプロジェクト参照を返す場合にもスローされます。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">IllegalOperationError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">flash.errors:IllegalOperationError</apiOperationClassifier></apiException><apiReturn class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiReturn "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">ネイティブ関数から返された値です。ネイティブ関数が値を返さない場合、または無効なオブジェクト参照を返す場合、戻り値は <codeph class="+ topic/ph pr-d/codeph ">null</codeph> です。
</apiDesc><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">Object</apiOperationClassifier></apiReturn><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">functionName</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">String</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">ネイティブ実装の関数を示す名前です。この名前はネイティブ関数の実際の名前とは限りませんが、拡張のActionScript 側とネイティブ側の間で合意した名前です。
</apiDesc></apiParam><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">args</apiItemName><apiType value="restParam" name="type" class="- topic/state reference/state apiRef/apiType "/><apiDesc class="- topic/section reference/section apiRef/apiDesc ">ネイティブ関数の引数のリストです。これらの引数には、ActionScript オブジェクト(プリミティブタイプまたは ActionScript クラスオブジェクト)を指定できます。引数のタイプおよび順序は、拡張の ActionScript 側とネイティブ側の間で合意されます。
</apiDesc></apiParam></apiOperationDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
<codeph class="+ topic/ph pr-d/codeph ">functionName</codeph> で指定されているネイティブ関数を呼び出します。追加の引数があれば、ネイティブ関数に渡されます。
</apiDesc></apiOperationDetail></apiOperation><apiOperation id="flash.external:ExtensionContext:createExtensionContext" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiOperation/apiOperation "><apiName class="- topic/title reference/title apiRef/apiName ">createExtensionContext</apiName><shortdesc class="- topic/shortdesc ">
指定した拡張 ID およびコンテキストタイプに対して ExtensionContext インスタンスを作成します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="AIR" version="2.5" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiOperationDetail class="- topic/body reference/refbody apiRef/apiDetail apiOperation/apiOperationDetail "><apiOperationDef class="- topic/section reference/section apiRef/apiDef apiOperation/apiOperationDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc "><codeph class="+ topic/ph pr-d/codeph ">extensionID</codeph> パラメーターに <codeph class="+ topic/ph pr-d/codeph ">null</codeph> または有効でない拡張 ID が指定されています。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">ArgumentError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">ArgumentError</apiOperationClassifier></apiException><apiReturn class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiReturn "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">新しい ExtensionContext インスタンスです。指定した <codeph class="+ topic/ph pr-d/codeph ">extensionID</codeph> 値の拡張を使用できない場合、<codeph class="+ topic/ph pr-d/codeph ">null</codeph> を返します。
</apiDesc><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">flash.external:ExtensionContext</apiOperationClassifier></apiReturn><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">extensionID</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">String</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">拡張の拡張 ID です。この ID は、拡張記述子ファイルの <codeph class="+ topic/ph pr-d/codeph ">id</codeph> エレメントと同じ値です。アプリケーション開発者は、アプリケーション記述子ファイルの <codeph class="+ topic/ph pr-d/codeph ">extensionID</codeph> エレメントでもこの値を使用します。すべての拡張は、単一のグローバル名前空間を共有します。そのため、名前の競合を回避するには、拡張 ID の逆 DNS 表記法を使用します。
</apiDesc></apiParam><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">contextType</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">String</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">拡張のコンテキストタイプです。コンテキストタイプに応じて、ネイティブ実装は異なる初期化を実行できます。例えば、ActionScript 側が呼び出すことができる、別の使用可能なネイティブ関数セットを指定するネイティブ実装もあります。コンテキストタイプの値は、拡張の ActionScript 側とネイティブ側の間で合意した任意の文字列です。多くの場合、簡易な拡張では異なるコンテキストタイプを使用しません。このような場合、<codeph class="+ topic/ph pr-d/codeph ">contextType</codeph> 値に空の文字 <codeph class="+ topic/ph pr-d/codeph ">""</codeph> または <codeph class="+ topic/ph pr-d/codeph ">null</codeph> を渡します。
</apiDesc></apiParam></apiOperationDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
指定した拡張 ID およびコンテキストタイプに対して ExtensionContext インスタンスを作成します。
</apiDesc></apiOperationDetail></apiOperation><apiOperation id="flash.external:ExtensionContext:dispose" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiOperation/apiOperation "><apiName class="- topic/title reference/title apiRef/apiName ">dispose</apiName><shortdesc class="- topic/shortdesc ">
この ExtensionContext インスタンスを破棄します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="AIR" version="2.5" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiOperationDetail class="- topic/body reference/refbody apiRef/apiDetail apiOperation/apiOperationDetail "><apiOperationDef class="- topic/section reference/section apiRef/apiDef apiOperation/apiOperationDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiReturn class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiReturn "><apiType value="void" name="type" class="- topic/state reference/state apiRef/apiType "/></apiReturn></apiOperationDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
この ExtensionContext インスタンスを破棄します。
<p class="- topic/p ">ランタイムからネイティブ実装に通知され、関連するネイティブリソースがすべて解放されます。<codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> の呼び出し後は、コードから <codeph class="+ topic/ph pr-d/codeph ">call()</codeph> メソッドを呼び出すことや、<codeph class="+ topic/ph pr-d/codeph ">actionScriptData</codeph> プロパティを取得または設定することはできなくなります。</p>
</apiDesc></apiOperationDetail></apiOperation><apiOperation id="flash.external:ExtensionContext:getExtensionDirectory" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiOperation/apiOperation "><apiName class="- topic/title reference/title apiRef/apiName ">getExtensionDirectory</apiName><shortdesc class="- topic/shortdesc ">
拡張がデバイスにインストールされているディレクトリを返します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="AIR" version="2.5" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiOperationDetail class="- topic/body reference/refbody apiRef/apiDetail apiOperation/apiOperationDetail "><apiOperationDef class="- topic/section reference/section apiRef/apiDef apiOperation/apiOperationDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">ディレクトリが存在しません。最も可能性が高い原因として、指定した <codeph class="+ topic/ph pr-d/codeph ">extensionID</codeph> が有効ではない可能性があります。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">IOError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">flash.errors:IOError</apiOperationClassifier></apiException><apiReturn class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiReturn "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">拡張がインストールされているディレクトリの File インスタンスです。
</apiDesc><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">flash.filesystem:File</apiOperationClassifier></apiReturn><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">extensionID</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">String</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">拡張の拡張 ID です。この ID は、<codeph class="+ topic/ph pr-d/codeph ">createExtensionContext()</codeph><codeph class="+ topic/ph pr-d/codeph ">extensionID</codeph> パラメーターと同じ値です。
</apiDesc></apiParam></apiOperationDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
拡張がデバイスにインストールされているディレクトリを返します。
<p class="- topic/p ">拡張には、拡張の ActionScript コードからアクセスする画像などのリソースが含まれることがあります。また、コードには、拡張記述子ファイルで使用できる情報が必要な場合もあります(拡張のバージョン番号など)。このメソッドを使用して、拡張のベースディレクトリにアクセスできます。</p>
<p class="- topic/p ">デバイスの拡張の場所にかかわらず、常に拡張のファイルは、拡張のベースディレクトリに相対して同じ場所にあります。このメソッドが返す File インスタンスを使用して、拡張に含まれる特定のファイルを特定し、操作できます。</p>
</apiDesc></apiOperationDetail></apiOperation><apiValue id="flash.external:ExtensionContext:actionScriptData:get" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiValue/apiValue "><apiName class="- topic/title reference/title apiRef/apiName ">actionScriptData</apiName><shortdesc class="- topic/shortdesc ">
このコンテキストに関連する ActionScript オブジェクトです(存在する場合)。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="AIR" version="2.5" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiValueDetail class="- topic/body reference/refbody apiRef/apiDetail apiValue/apiValueDetail "><apiValueDef class="- topic/section reference/section apiRef/apiDef apiValue/apiValueDef "><apiProperty class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiProperty "/><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiDynamic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiDynamic "/><apiValueAccess value="readwrite" class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiValueAccess "/><apiValueClassifier class="- topic/xref reference/xref apiRef/apiRelation apiValue/apiValueClassifier ">Object</apiValueClassifier><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">メソッド <codeph class="+ topic/ph pr-d/codeph ">dispose()</codeph> は、この ExtensionContext インスタンスで呼び出し済みです。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">IllegalOperationError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">flash.errors:IllegalOperationError</apiOperationClassifier></apiException></apiValueDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
このコンテキストに関連する ActionScript オブジェクトです(存在する場合)。
<p class="- topic/p ">任意の ActionScript オブジェクトを ExtensionContext インスタンスに関連付けることができます。また、ネイティブ実装は、この ActionScript オブジェクトを取得および設定できます。そのため、<codeph class="+ topic/ph pr-d/codeph ">actionScriptData</codeph> を使用して、拡張の ActionScript 側とネイティブ側でデータを共有できます。</p>
<p class="- topic/p ">また、<codeph class="+ topic/ph pr-d/codeph ">actionScriptData</codeph> の値を <codeph class="+ topic/ph pr-d/codeph ">null</codeph> に設定できます。</p>
</apiDesc></apiValueDetail></apiValue></apiClassifier><apiClassifier languages="" id="flash.external:ExternalInterface" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiClassifier/apiClassifier "><apiName class="- topic/title reference/title apiRef/apiName ">ExternalInterface</apiName><shortdesc class="- topic/shortdesc ">
ExternalInterface クラスは、ActionScript と SWF のコンテナとの間で直接通信できるようにするアプリケーションプログラミングインターフェイスです。コンテナには、JavaScript を使用した HTML ページや、Flash Player を使用して SWF ファイルを表示するデスクトップアプリケーションなどがあります。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="Flash" version="9" class="+ topic/ph adobe-api-d/apiPlatform "/><apiPlatform description="" name="Lite" version="4" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata><asCustoms class="+ topic/metadata adobe-api-d/asCustoms "><internal>Verify table is still correct and paragraph below the table still applies.
</internal></asCustoms></prolog><apiClassifierDetail class="- topic/body reference/refbody apiRef/apiDetail apiClassifier/apiClassifierDetail "><apiClassifierDef class="- topic/section reference/section apiRef/apiDef apiClassifier/apiClassifierDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiFinal class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiFinal "/><apiTipTexts><apiTipText class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiTipText ">ActionScript とコンテナの間の通信を有効にします。
</apiTipText></apiTipTexts><apiBaseClassifier class="- topic/xref reference/xref apiRef/apiRelation apiClassifier/apiBaseClassifier ">Object</apiBaseClassifier></apiClassifierDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
ExternalInterface クラスは、ActionScript と SWF のコンテナとの間で直接通信できるようにするアプリケーションプログラミングインターフェイスです。コンテナには、JavaScript を使用した HTML ページや、Flash Player を使用して SWF ファイルを表示するデスクトップアプリケーションなどがあります。
<p class="- topic/p ">ExternalInterface クラスを使用すると、HTML ページの JavaScript を使用することによって、Flash ランタイムで ActionScript 関数を呼び出すことができます。ActionScript 関数は値を返すことができ、JavaScript は、呼び出しの戻り値として即座にこの値を受け取ります。</p>
<p class="- topic/p ">この機能は、<codeph class="+ topic/ph pr-d/codeph ">fscommand()</codeph> メソッドに代わるものです。</p>
<p class="- topic/p ">ExternalInterface クラスは、次のブラウザーとオペレーティングシステムの組み合わせで使用してください。</p>
<adobetable class="innertable"><tgroup cols="3" class="- topic/tgroup "><thead class="- topic/thead "><row class="- topic/row "><entry class="- topic/entry ">ブラウザー</entry><entry class="- topic/entry ">オペレーティングシステム</entry><entry class="- topic/entry ">オペレーティングシステム</entry></row></thead><tbody class="- topic/tbody "><row class="- topic/row "><entry class="- topic/entry ">Internet Explorer 5.0 以降</entry><entry class="- topic/entry "> Windows </entry><entry class="- topic/entry "> </entry></row><row class="- topic/row "><entry class="- topic/entry ">Netscape 8.0 以降</entry><entry class="- topic/entry "> Windows </entry><entry class="- topic/entry "> Mac OS </entry></row><row class="- topic/row "><entry class="- topic/entry ">Mozilla 1.7.5 以降</entry><entry class="- topic/entry "> Windows </entry><entry class="- topic/entry "> Mac OS </entry></row><row class="- topic/row "><entry class="- topic/entry ">Firefox 1.0 以降</entry><entry class="- topic/entry "> Windows </entry><entry class="- topic/entry "> Mac OS </entry></row><row class="- topic/row "><entry class="- topic/entry ">Safari 1.3 以降</entry><entry class="- topic/entry "> </entry><entry class="- topic/entry "> Mac OS </entry></row></tbody></tgroup></adobetable>
<p class="- topic/p ">Linux バージョン 9.0.31.0 以降用の Flash Player では、次のブラウザーで ExternalInterface クラスがサポートされます。</p>
<adobetable class="innertable"><tgroup cols="1" class="- topic/tgroup "><thead class="- topic/thead "><row class="- topic/row "><entry class="- topic/entry ">ブラウザー</entry></row></thead><tbody class="- topic/tbody "><row class="- topic/row "><entry class="- topic/entry ">Mozilla 1.7.x 以降</entry></row><row class="- topic/row "><entry class="- topic/entry ">Firefox 1.5.0.7 以降</entry></row><row class="- topic/row "><entry class="- topic/entry ">SeaMonkey 1.0.5 以降 </entry></row></tbody></tgroup></adobetable>
<p class="- topic/p ">ExternalInterface クラスを利用するには、ユーザーの Web ブラウザーが、一部のブラウザーによってプラグインスクリプトとして公開されている ActiveX<sup class="+ topic/ph hi-d/sup ">®</sup> または NPRuntime API のいずれかをサポートしている必要があります。ブラウザーおよびオペレーティングシステムの組み合わせが上記になくても、NPRuntime API がサポートされる場合、ExternalInterface クラスがサポートされます。<xref href="http://www.mozilla.org/projects/plugins/npruntime.html" scope="external" class="- topic/xref ">http://www.mozilla.org/projects/plugins/npruntime.html</xref> を参照してください。</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">注意:</b>HTML ページに内に SWF ファイルを埋め込むときには、<codeph class="+ topic/ph pr-d/codeph ">id</codeph> 属性が設定されていることを確認し、<codeph class="+ topic/ph pr-d/codeph ">id</codeph> 属性および <codeph class="+ topic/ph pr-d/codeph ">name</codeph> 属性(<codeph class="+ topic/ph pr-d/codeph ">object</codeph> タグおよび <codeph class="+ topic/ph pr-d/codeph ">embed</codeph> タグ)に次の文字が含まれないようにします。</p>
<pre xml:space="preserve" class="- topic/pre ">
. - + ~~ / \
</pre>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">Flash Player アプリケーションに関する注意:</b>Flash Player バージョン 9.0.115.0 以降では、<codeph class="+ topic/ph pr-d/codeph ">.</codeph>(ピリオド)文字を <codeph class="+ topic/ph pr-d/codeph ">id</codeph> 属性内および <codeph class="+ topic/ph pr-d/codeph ">name</codeph> 属性内で使用できます。</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">Flash Player アプリケーションに関する注意:</b>ブラウザーで実行される Flash Player 10 以降では、このクラスをプログラムで使用してポップアップウィンドウを開く方法は有効でない場合があります。ブラウザー(およびブラウザーの設定)によってはポップアップウィンドウがブロックされる場合があり、すべてのポップアップウィンドウが表示される保証はありません。ただし、ユーザー操作の直接の結果として実行されるコード(マウスのクリックやキー入力イベントのイベントハンドラーなど)に限っては、このクラスを使用してポップアップウィンドウを開く方法が有効です。</p>
<p class="- topic/p ">ActionScript から、HTML ページに対して次のことを実行できます。
<ul class="- topic/ul "><li class="- topic/li ">任意の JavaScript 関数を呼び出す</li><li class="- topic/li ">引数の数を名前と共に渡す</li><li class="- topic/li ">ブール(Boolean)、数値(Number)、ストリング(String)などの各種データ型を渡す</li><li class="- topic/li ">JavaScript 関数からの戻り値を受け取る</li></ul>
</p>
<p class="- topic/p ">HTML ページの JavaScript から、次のことを実行できます。
<ul class="- topic/ul "><li class="- topic/li ">ActionScript 関数を呼び出す</li><li class="- topic/li ">標準の関数呼び出しの表記法を使用して、引数を渡す</li><li class="- topic/li ">JavaScript 関数に値を戻す</li></ul>
</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">Flash Player アプリケーションに関する注意:</b>Flash Player は現在、HTML フォームに埋め込まれた SWF ファイルをサポートしていません。</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">AIR アプリケーションに関する注意:</b>Adobe AIR では、ExternalInterface クラスを使用して、HTMLLoader コントロールに読み込まれた HTML ページの JavaScript とその HTML ページに埋め込まれた SWF コンテンツの ActionScript との間で通信できます。</p>
</apiDesc><example conref="examples\ExternalInterfaceExample.as" class="- topic/example "> 次の例では、Flash Player および HTML コンテナ間でデータを送信する方法を示します。
<codeblock xml:space="preserve" class="+ topic/pre pr-d/codeblock ">
package {
import flash.display.Sprite;
import flash.events.*;
import flash.external.ExternalInterface;
import flash.text.TextField;
import flash.utils.Timer;
import flash.text.TextFieldType;
import flash.text.TextFieldAutoSize;
public class ExternalInterfaceExample extends Sprite {
private var input:TextField;
private var output:TextField;
private var sendBtn:Sprite;
public function ExternalInterfaceExample() {
input = new TextField();
input.type = TextFieldType.INPUT;
input.background = true;
input.border = true;
input.width = 350;
input.height = 18;
addChild(input);
sendBtn = new Sprite();
sendBtn.mouseEnabled = true;
sendBtn.x = input.width + 10;
sendBtn.graphics.beginFill(0xCCCCCC);
sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10);
sendBtn.graphics.endFill();
sendBtn.addEventListener(MouseEvent.CLICK, clickHandler);
addChild(sendBtn);
output = new TextField();
output.y = 25;
output.width = 450;
output.height = 325;
output.multiline = true;
output.wordWrap = true;
output.border = true;
output.text = "Initializing...\n";
addChild(output);
if (ExternalInterface.available) {
try {
output.appendText("Adding callback...\n");
ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
if (checkJavaScriptReady()) {
output.appendText("JavaScript is ready.\n");
} else {
output.appendText("JavaScript is not ready, creating timer.\n");
var readyTimer:Timer = new Timer(100, 0);
readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
readyTimer.start();
}
} catch (error:SecurityError) {
output.appendText("A SecurityError occurred: " + error.message + "\n");
} catch (error:Error) {
output.appendText("An Error occurred: " + error.message + "\n");
}
} else {
output.appendText("External interface is not available for this container.");
}
}
private function receivedFromJavaScript(value:String):void {
output.appendText("JavaScript says: " + value + "\n");
}
private function checkJavaScriptReady():Boolean {
var isReady:Boolean = ExternalInterface.call("isReady");
return isReady;
}
private function timerHandler(event:TimerEvent):void {
output.appendText("Checking JavaScript status...\n");
var isReady:Boolean = checkJavaScriptReady();
if (isReady) {
output.appendText("JavaScript is ready.\n");
Timer(event.target).stop();
}
}
private function clickHandler(event:MouseEvent):void {
if (ExternalInterface.available) {
ExternalInterface.call("sendToJavaScript", input.text);
}
}
}
}
</codeblock> 上記の ActionScript コードをテストするには、次の HTML テンプレートを使用して、生成された SWF ファイルを埋め込みます。
<codeblock rev="2.0" xml:space="preserve" class="+ topic/pre pr-d/codeblock ">
&lt;!-- saved from url=(0014)about:internet -->
&lt;html lang="en">
&lt;head>
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
&lt;title>ExternalInterfaceExample&lt;/title>
&lt;script language="JavaScript">
var jsReady = false;
function isReady() {
return jsReady;
}
function pageInit() {
jsReady = true;
document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n";
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function sendToActionScript(value) {
thisMovie("ExternalInterfaceExample").sendToActionScript(value);
}
function sendToJavaScript(value) {
document.forms["form1"].output.value += "ActionScript says: " + value + "\n";
}
&lt;/script>
&lt;/head>
&lt;body onload="pageInit();">
&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="ExternalInterfaceExample" width="500" height="375"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
&lt;param name="movie" value="ExternalInterfaceExample.swf" />
&lt;param name="quality" value="high" />
&lt;param name="bgcolor" value="#869ca7" />
&lt;param name="allowScriptAccess" value="sameDomain" />
&lt;embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7"
width="500" height="375" name="ExternalInterfaceExample" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
&lt;/embed>
&lt;/object>
&lt;form name="form1" onsubmit="return false;">
&lt;input type="text" name="input" value="" />
&lt;input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" />&lt;br />
&lt;textarea cols="60" rows="20" name="output" readonly="true">Initializing...&lt;/textarea>
&lt;/form>
&lt;/body>
&lt;/html>
</codeblock>
</example></apiClassifierDetail><related-links class="- topic/related-links "><link href="../../flash/system/package.html#fscommand()" class="- topic/link "><linktext class="- topic/linktext ">fscommand()</linktext></link></related-links><apiOperation id="flash.external:ExternalInterface:addCallback" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiOperation/apiOperation "><apiName class="- topic/title reference/title apiRef/apiName ">addCallback</apiName><shortdesc class="- topic/shortdesc ">
ActionScript メソッドをコンテナから呼び出し可能なものとして登録します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="Flash" version="9" class="+ topic/ph adobe-api-d/apiPlatform "/><apiPlatform description="" name="Lite" version="4" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiOperationDetail class="- topic/body reference/refbody apiRef/apiDetail apiOperation/apiOperationDetail "><apiOperationDef class="- topic/section reference/section apiRef/apiDef apiOperation/apiOperationDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナが着信コールをサポートしていません。着信コールは Windows 用の Internet Explorer、Mozilla 1.7.5 以降、Firefox 1.0 以降などの NPRuntime API を使用するブラウザーでのみサポートされます。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">Error</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">Error</apiOperationClassifier></apiException><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">指定された名前を使用したコールバックが、アクセスしていない Sandbox 内で既に ActionScript によって追加されています。このコールバックを上書きできません。この問題を回避するには、<codeph class="+ topic/ph pr-d/codeph ">addCallback()</codeph> メソッドの呼び出し元の ActionScript を書き換えて、このスクリプトから <codeph class="+ topic/ph pr-d/codeph ">Security.allowDomain()</codeph> メソッドも呼び出すようにします。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">SecurityError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">SecurityError</apiOperationClassifier></apiException><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナ環境がセキュリティサンドボックスに属しているために、呼び出し側のコードにアクセス権がありません。この問題を修正するには、次の手順に従います。
<ol class="- topic/ol "><li class="- topic/li ">HTML ページに埋め込む SWF ファイルの <codeph class="+ topic/ph pr-d/codeph ">object</codeph> タグの中で次のパラメーターを設定します。
<p class="- topic/p "><codeph class="+ topic/ph pr-d/codeph ">&lt;param name="allowScriptAccess" value="always" /></codeph></p>
</li><li class="- topic/li ">SWF ファイルで、次の ActionScript を追加します。
<p class="- topic/p "><codeph class="+ topic/ph pr-d/codeph "> flash.system.Security.allowDomain( <i class="+ topic/ph hi-d/i ">sourceDomain</i> ) </codeph></p>
</li></ol>
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">SecurityError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">SecurityError</apiOperationClassifier></apiException><apiReturn class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiReturn "><apiType value="void" name="type" class="- topic/state reference/state apiRef/apiType "/></apiReturn><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">functionName</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">String</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナが関数を呼び出すことができる名前です。
</apiDesc></apiParam><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">closure</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">Function</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">呼び出す関数閉包です。これは独立した関数にすることも、オブジェクトインスタンスのメソッドを参照するメソッド閉包とすることもできます。メソッドクロージャを渡すことにより、コールバックを特定のオブジェクトインスタンスのメソッドに指定できます。
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">注意:</b>既存のコールバック関数に対して、closure 値に <codeph class="+ topic/ph pr-d/codeph ">null</codeph> を指定して <codeph class="+ topic/ph pr-d/codeph ">addCallback()</codeph> を繰り返し実行すると、コールバックが削除されます。</p>
</apiDesc></apiParam></apiOperationDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
ActionScript メソッドをコンテナから呼び出し可能なものとして登録します。<codeph class="+ topic/ph pr-d/codeph ">addCallBack()</codeph> の呼び出しが成功すると、プレーヤー内に登録されている関数をコンテナ内の JavaScript や ActiveX から呼び出すことができます。
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">注意:</b>ブラウザーで実行される<i class="+ topic/ph hi-d/i ">ローカル</i>コンテンツでは、SWF ファイルとその埋め込み先の Web ページが local-trusted セキュリティサンドボックス内にある場合にのみ、<codeph class="+ topic/ph pr-d/codeph ">ExternalInterface.addCallback()</codeph> メソッドの呼び出しが機能します。詳細については、Flash Player デベロッパーセンターのトピック:<xref href="http://www.adobe.com/go/devnet_security_jp" scope="external" class="- topic/xref ">セキュリティ</xref>を参照してください。</p>
</apiDesc></apiOperationDetail><related-links class="- topic/related-links "><link href="flash.system.xml#Security/allowDomain()" class="- topic/link "><linktext class="- topic/linktext ">flash.system.Security.allowDomain()</linktext></link></related-links></apiOperation><apiOperation id="flash.external:ExternalInterface:call" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiOperation/apiOperation "><apiName class="- topic/title reference/title apiRef/apiName ">call</apiName><shortdesc class="- topic/shortdesc ">
SWF コンテナで公開されている関数を呼び出し、必要に応じて引数を渡します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="Flash" version="9" class="+ topic/ph adobe-api-d/apiPlatform "/><apiPlatform description="" name="Lite" version="4" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata><asCustoms class="+ topic/metadata adobe-api-d/asCustoms "><internal>Should probably provide a link for the 4th paragraph above for info on Netscape.
</internal></asCustoms></prolog><apiOperationDetail class="- topic/body reference/refbody apiRef/apiDetail apiOperation/apiOperationDetail "><apiOperationDef class="- topic/section reference/section apiRef/apiDef apiOperation/apiOperationDef "><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナが送信コールをサポートしていません。送信コールは Windows 用の Internet Explorer、Mozilla 1.7.5 以降、Firefox 1.0 以降などの NPRuntime API を使用するブラウザーでのみサポートされます。
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">Error</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">Error</apiOperationClassifier></apiException><apiException class="+ topic/ph reference/ph apiRef/apiDefItem apiOperation/apiEvent adobe-api-d/apiException "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナ環境がセキュリティサンドボックスに属しているために、呼び出し側のコードにアクセス権がありません。この問題を修正するには、次の手順に従います。
<ol class="- topic/ol "><li class="- topic/li ">HTML ページに埋め込む SWF ファイルの <codeph class="+ topic/ph pr-d/codeph ">object</codeph> タグの中で次のパラメーターを設定します。
<p class="- topic/p "><codeph class="+ topic/ph pr-d/codeph ">&lt;param name="allowScriptAccess" value="always" /></codeph></p>
</li><li class="- topic/li ">SWF ファイルで、次の ActionScript を追加します。
<p class="- topic/p "><codeph class="+ topic/ph pr-d/codeph "> flash.system.Security.allowDomain( <i class="+ topic/ph hi-d/i ">sourceDomain</i> ) </codeph></p>
</li></ol>
</apiDesc><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">SecurityError</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">SecurityError</apiOperationClassifier></apiException><apiReturn class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiReturn "><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナから受け取った応答です。呼び出しに失敗した場合は、<codeph class="+ topic/ph pr-d/codeph ">null</codeph> が返され、エラーがスローされます。失敗原因としては、コンテナに該当する関数が存在しない場合、インターフェイスが利用できない場合、再帰が発生した場合(Netscape ブラウザーまたは Opera ブラウザーの場合)、セキュリティ上の問題がある場合などがあります。
</apiDesc><apiType value="any" name="type" class="- topic/state reference/state apiRef/apiType "/></apiReturn><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">functionName</apiItemName><apiOperationClassifier class="- topic/xref reference/xref apiRef/apiRelation apiOperation/apiOperationClassifier ">String</apiOperationClassifier><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナ内にある呼び出し先関数の英数字の名前です。英数字の関数名を使用すると、ランタイムエラー(エラー 2155)が発生します。<codeph class="+ topic/ph pr-d/codeph ">try..catch</codeph> ブロックを使用して、このエラーを処理できます。
</apiDesc></apiParam><apiParam class="- topic/ph reference/ph apiRef/apiDefItem apiOperation/apiParam "><apiItemName class="- topic/keyword reference/keyword apiRef/apiItemName ">arguments</apiItemName><apiType value="restParam" name="type" class="- topic/state reference/state apiRef/apiType "/><apiDesc class="- topic/section reference/section apiRef/apiDesc ">コンテナ内の関数に渡されるパラメーターです。任意のパラメーターを指定することができ、複数のパラメーターを指定する場合はカンマで区切ります。パラメーターには任意の ActionScript データ型を使用できます。呼び出し先が JavaScript 関数である場合、ActionScript のデータ型は JavaScript のデータ型に自動的に変換されます。呼び出し先が他の ActiveX コンテナである場合、パラメーターは要求メッセージの中にエンコードされます。
</apiDesc></apiParam><apiTipTexts><apiTipText class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiTipText ">コンテナ内の関数を呼び出します。
</apiTipText></apiTipTexts></apiOperationDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
SWF コンテナで公開されている関数を呼び出し、必要に応じて引数を渡します。関数が利用できない場合は <codeph class="+ topic/ph pr-d/codeph ">null</codeph> を返します。それ以外の場合は、関数の戻り値を返します。再帰は、Opera ブラウザーまたは Netscape ブラウザーでは許可されて<i class="+ topic/ph hi-d/i ">いません</i>。これらのブラウザーでは、再帰呼び出しで <codeph class="+ topic/ph pr-d/codeph ">null</codeph> 応答が発生します。Internet Explorer ブラウザーおよび Firefox ブラウザーでは、再帰がサポートされています。
<p class="- topic/p ">コンテナが HTML ページである場合、このメソッドは <codeph class="+ topic/ph pr-d/codeph ">script</codeph> エレメントに囲まれた JavaScript 関数を呼び出します。</p>
<p class="- topic/p ">コンテナが別の ActiveX コンテナの場合、このメソッドは、指定された名前で FlashCall ActiveX イベントを送出し、そのイベントはコンテナによって処理されます。</p>
<p class="- topic/p ">コンテナが Netscape プラグインをホストしている場合、新しい NPRuntime インターフェイス用のカスタムサポートを記述するか、HTML コントロールを埋め込んだ後にそのコントロール内にプレーヤーを埋め込むことができます。HTML コントロールを埋め込んだ場合、ネイティブコンテナアプリケーションに対する JavaScript インターフェイスを通じてプレーヤーと通信できます。</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">注意:</b>ブラウザーで実行される<i class="+ topic/ph hi-d/i ">ローカル</i>コンテンツでは、SWF ファイルとその埋め込み先の Web ページ(存在する場合)が local-trusted セキュリティサンドボックス内にある場合にのみ、<codeph class="+ topic/ph pr-d/codeph ">ExternalInterface.call()</codeph> メソッドの呼び出しが許可されます。SWF ファイルがこのメソッドを使用しないようにすることもできます。その場合は、SWF コンテンツを含んでいる HTML ページに <codeph class="+ topic/ph pr-d/codeph ">object</codeph> タグおよび <codeph class="+ topic/ph pr-d/codeph ">embed</codeph> タグの <codeph class="+ topic/ph pr-d/codeph ">allowNetworking</codeph> パラメーターを設定します。詳細については、Flash Player デベロッパーセンターのトピック:<xref href="http://www.adobe.com/go/devnet_security_jp" scope="external" class="- topic/xref ">セキュリティ</xref>を参照してください。</p>
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">Flash Player アプリケーションに関する注意:</b>Flash Player 10 および Flash Player 9 Update 5 では、ポップアップブロッカーが有効になっている場合、一部の Web ブラウザーでこのメソッドが制限されます。このシナリオでは、このメソッドの呼び出しはマウスのクリックやキー入力などのユーザーイベントに応じて、イベントハンドラーで呼び出した場合にのみ成功します。</p>
</apiDesc><example conref="examples\ExternalInterface_call_alert.as" class="- topic/example "> 次の例では、ExternalInterface クラス(flash.external.ExternalInterface)を使用して、Flash Player から HTML コンテナにストリングを送信し、そのストリングを JavaScript の alert() 関数を使用して表示する方法を示します。<xref href="http://actionscriptexamples.com/2008/02/28/using-the-externalinterface-class-in-actionscript-20-and-actionscript-30/" scope="_mmexternal" class="- topic/xref ">ActionScriptExamples.com</xref> で作成された例。
<codeblock xml:space="preserve" class="+ topic/pre pr-d/codeblock ">
//
// Requires:
// - A Flash Professional Label component on the Stage with an instance name of "lbl".
// - A Flash Professional Button component on the Stage with an instance name of "button".
//
var xmlResponse:String = "&lt;invoke name=\"isReady\" returntype=\"xml\">&lt;arguments>&lt;number>1&lt;/number>&lt;number>" + stage.stageWidth + "&lt;/number>&lt;number>" + stage.stageHeight + "&lt;/number>&lt;/arguments>&lt;/invoke>";
lbl.text = "ExternalInterface.available: " + ExternalInterface.available;
lbl.width = 200;
button.enabled = ExternalInterface.available;
button.addEventListener(MouseEvent.CLICK, button_click);
function button_click(evt:MouseEvent):void {
ExternalInterface.call("alert", xmlResponse);
}
</codeblock></example></apiOperationDetail></apiOperation><apiValue id="flash.external:ExternalInterface:marshallExceptions" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiValue/apiValue "><apiName class="- topic/title reference/title apiRef/apiName ">marshallExceptions</apiName><shortdesc class="- topic/shortdesc ">
外部インターフェイスから、ActionScript の例外を現在のブラウザーに渡したり、JavaScript の例外をプレーヤーに渡したりする必要があるかどうかを示します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="Flash" version="9.0.115.0" class="+ topic/ph adobe-api-d/apiPlatform "/><apiPlatform description="" name="Lite" version="4" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiValueDetail class="- topic/body reference/refbody apiRef/apiDetail apiValue/apiValueDetail "><apiValueDef class="- topic/section reference/section apiRef/apiDef apiValue/apiValueDef "><apiProperty class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiProperty "/><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiData class="- topic/ph reference/ph apiRef/apiData ">false</apiData><apiValueClassifier class="- topic/xref reference/xref apiRef/apiRelation apiValue/apiValueClassifier ">Boolean</apiValueClassifier><apiTipTexts><apiTipText class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiTipText ">ActionScript と JavaScript との間で例外を渡します。
</apiTipText></apiTipTexts></apiValueDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
外部インターフェイスから、ActionScript の例外を現在のブラウザーに渡したり、JavaScript の例外をプレーヤーに渡したりする必要があるかどうかを示します。ActionScript で JavaScript 例外をキャッチし、JavaScript で ActionScript 例外をキャッチするには、このプロパティを明示的に <codeph class="+ topic/ph pr-d/codeph ">true</codeph> に設定する必要があります。
</apiDesc><example conref="examples\ExternalInterface.marshallExceptions.1.as" class="- topic/example "> 次の例では、ActionScript 関数を作成し、<codeph class="+ topic/ph pr-d/codeph ">addCallback()</codeph> メソッドを使用して、埋め込み先のブラウザーと共にその関数を登録します。新しい関数は、ブラウザーで実行される JavaScript コードでキャッチできるように、例外をスローします。この例には、<codeph class="+ topic/ph pr-d/codeph ">try..catch</codeph> ステートメントも含まれており、<codeph class="+ topic/ph pr-d/codeph ">throwit()</codeph> 関数が呼び出されたときにブラウザーからスローされるすべての例外をキャッチします。
<codeblock xml:space="preserve" class="+ topic/pre pr-d/codeblock ">
package
{
import flash.external.*
import flash.net.*;
import flash.display.*;
import flash.system.System;
public class ext_test extends Sprite {
function ext_test():void {
ExternalInterface.marshallExceptions = true;
ExternalInterface.addCallback("g", g);
try {
ExternalInterface.call("throwit");
} catch(e:Error) {
trace(e)
}
}
function g() { throw new Error("exception from actionscript!!!!") }
}
}
</codeblock></example></apiValueDetail><related-links class="- topic/related-links "><link href="flash.external.xml#ExternalInterface/addCallBack()" class="- topic/link "><linktext class="- topic/linktext ">addCallBack()</linktext></link><link href="../../statements.html#try..catch..finally" class="- topic/link "><linktext class="- topic/linktext ">try..catch..finally ステートメント</linktext></link></related-links></apiValue><apiValue id="flash.external:ExternalInterface:available:get" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiValue/apiValue "><apiName class="- topic/title reference/title apiRef/apiName ">available</apiName><shortdesc class="- topic/shortdesc ">
この Player が外部インターフェイスを備えたコンテナに含まれているかどうかを示します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="Flash" version="9" class="+ topic/ph adobe-api-d/apiPlatform "/><apiPlatform description="" name="Lite" version="4" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiValueDetail class="- topic/body reference/refbody apiRef/apiDetail apiValue/apiValueDetail "><apiValueDef class="- topic/section reference/section apiRef/apiDef apiValue/apiValueDef "><apiProperty class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiProperty "/><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiValueAccess value="read" class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiValueAccess "/><apiValueClassifier class="- topic/xref reference/xref apiRef/apiRelation apiValue/apiValueClassifier ">Boolean</apiValueClassifier><apiTipTexts><apiTipText class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiTipText ">プレーヤーが外部インターフェイスを備えたコンテナに含まれているかどうかを示します。
</apiTipText></apiTipTexts></apiValueDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
この Player が外部インターフェイスを備えたコンテナに含まれているかどうかを示します。外部インターフェイスが利用できる場合、このプロパティは <codeph class="+ topic/ph pr-d/codeph ">true</codeph> になります。利用できない場合には <codeph class="+ topic/ph pr-d/codeph ">false</codeph> になります。
<p class="- topic/p "><b class="+ topic/ph hi-d/b ">注意:</b>HTML で外部 API を使用する場合、JavaScript メソッドを呼び出そうとする前に、HTML のロードが完了していることを必ず確認する必要があります。</p>
</apiDesc><example class="- topic/example ">次の例では、<codeph class="+ topic/ph pr-d/codeph ">available</codeph> プロパティを使用して、外部インターフェイスを備えたコンテナ内に Player が含まれているかどうかを確認します。
<codeblock rev="3.0" xml:space="preserve" class="+ topic/pre pr-d/codeblock ">
package {
import flash.text.TextField;
import flash.display.MovieClip;
import flash.external.ExternalInterface;
public class extint_test extends MovieClip {
public function extint_test() {
var isAvailable:Boolean = ExternalInterface.available;
var availTxt:TextField = new TextField();
availTxt.text = isAvailable.toString();
addChild(availTxt);
}
}
}
</codeblock>
</example></apiValueDetail></apiValue><apiValue id="flash.external:ExternalInterface:objectID:get" ditaarch:DITAArchVersion="1.0" domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic pr-d api-d)" class="- topic/topic reference/reference apiRef/apiRef apiValue/apiValue "><apiName class="- topic/title reference/title apiRef/apiName ">objectID</apiName><shortdesc class="- topic/shortdesc ">
Internet Explorer の場合は object タグの id 属性を返し、Netscape の場合は embed タグの name 属性を返します。</shortdesc><prolog class="- topic/prolog "><asMetadata class="+ topic/metadata adobe-api-d/asMetadata "><apiVersion class="+ topic/ph adobe-api-d/apiVersion "><apiLanguage version="3.0" class="+ topic/ph adobe-api-d/apiLanguage "/><apiPlatform description="" name="Flash" version="9" class="+ topic/ph adobe-api-d/apiPlatform "/><apiPlatform description="" name="Lite" version="4" class="+ topic/ph adobe-api-d/apiPlatform "/></apiVersion></asMetadata></prolog><apiValueDetail class="- topic/body reference/refbody apiRef/apiDetail apiValue/apiValueDetail "><apiValueDef class="- topic/section reference/section apiRef/apiDef apiValue/apiValueDef "><apiProperty class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiProperty "/><apiAccess value="public" class="- topic/state reference/state apiRef/apiQualifier adobe-api-d/apiAccess "/><apiStatic class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiStatic "/><apiValueAccess value="read" class="+ topic/state reference/state apiRef/apiQualifier adobe-api-d/apiValueAccess "/><apiValueClassifier class="- topic/xref reference/xref apiRef/apiRelation apiValue/apiValueClassifier ">String</apiValueClassifier></apiValueDef><apiDesc class="- topic/section reference/section apiRef/apiDesc ">
Internet Explorer の場合は <codeph class="+ topic/ph pr-d/codeph ">object</codeph> タグの <codeph class="+ topic/ph pr-d/codeph ">id</codeph> 属性を返し、Netscape の場合は <codeph class="+ topic/ph pr-d/codeph ">embed</codeph> タグの <codeph class="+ topic/ph pr-d/codeph ">name</codeph> 属性を返します。
</apiDesc></apiValueDetail></apiValue></apiClassifier></apiPackage>