| パッケージ | flash.net |
| クラス | public class LocalConnection |
| 継承 | LocalConnection EventDispatcher Object |
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
ローカル接続により、fscommand() または JavaScript を使用しなくても、この種類の SWF ファイル間の通信が可能になります。LocalConnection オブジェクトを使って通信できるのは、同じクライアントコンピュータ上で実行中のファイル間だけです。ただし、これらは異なるアプリケーションで実行されていてもかまいません。例えば、ブラウザで実行されているファイルと、Adobe AIR で実行されている SWF ファイルとの間で通信することができます。
ActionScript 3.0 で作成された LocalConnection オブジェクトは、ActionScript 1.0 または 2.0 で作成された LocalConnection オブジェクトと通信できます。また、その逆も可能です。ActionScript 1.0 または 2.0 で作成された LocalConnection オブジェクトは、ActionScript 3.0 で作成された LocalConnection オブジェクトと通信できます。Flasn Player では、このようなバージョンの異なる LocalConnection オブジェクト間の通信が自動的に処理されます。
各ファイルで使用されるコマンドを確認することで、2 つのファイル間で通信を行うための LocalConnection オブジェクトの使用方法が理解しやすくなります。一方のファイルを送信側ファイルと呼びます。これは呼び出されるメソッドが含まれるファイルです。この送信側 ファイルには、LocalConnection オブジェクトと send() メソッドの呼び出しが含まれている必要があります。もう一方のファイルを受信側ファイルと呼びます。これはメソッドを呼び出すファイルです。この受信側 ファイルには、送信側 SWF ファイルとは別の LocalConnection オブジェクトと connect() メソッドの呼び出しが含まれている必要があります。
send() と connect() のどちらを使用するかは、ファイルが同じドメイン内にある場合、予測可能なドメイン名を持つ異なるドメインにある場合、予測不可能または動的なドメイン名を持つ異なるドメインにある場合により異なります。次の段落では、上記の 3 つの場合それぞれについて、サンプルコードを使用して説明します。
同じドメインの場合 : この場合は、同じドメイン内の LocalConnection オブジェクト間だけで通信を許可します。同一ドメイン通信はデフォルトで許可されているので、これは LocalConnection オブジェクトの最も簡単な使用方法です。 同じドメインにある 2 つの ファイル同士で通信を行う場合、connectionName パラメータに対する同じ値を connect() メソッドと send() メソッドに渡すだけであるため、特別なセキュリティ対策を施す必要はありません。
// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.connect('myConnection');
// sendingLC is in http://www.domain.com/sending.swf
// myMethod() is defined in sending.swf
sendingLC.send('myConnection', 'myMethod');
予測可能なドメイン名を持つ異なるドメインの場合 : それぞれ異なるドメインに存在する 2 つの SWF ファイル間で通信を行う場合、allowDomain() メソッドを呼び出して、これらの 2 つのドメイン間で通信を許可する必要があります。また、send() メソッドの接続名を、受信側 LocalConnection オブジェクトのドメイン名で修飾する必要があります。
// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.allowDomain('www.anotherdomain.com');
receivingLC.connect('myConnection');
// sendingLC is in http://www.anotherdomain.com/sending.swf
sendingLC.send('www.domain.com:myConnection', 'myMethod');
予測不可能なドメイン名を持つ異なるドメインの場合 : 受信側の LocalConnection オブジェクトを含むファイルをドメイン間で移植しやすくしたい場合があります。send() メソッドでドメイン名を指定せずに受信側と送信側の LocalConnection オブジェクトが同じドメインにないことを Flash Player に認識させるには、connect() 呼び出しと send() 呼び出しの両方で、接続名の前にアンダースコア(_)を付けます。2 つのドメイン間の通信を許可するには、allowDomain() メソッドを呼び出して、LocalConnection の呼び出しを許可するドメインを渡します。または、ワイルドカード (*) を引数に渡して、すべてのドメインからの呼び出しを許可します。
// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.allowDomain('*');
receivingLC.connect('_myConnection');
// sendingLC is in http://www.anotherdomain.com/sending.swf
sendingLC.send('_myConnection', 'myMethod');
LocalConnection オブジェクトを使用して、1 つのファイル内でデータを送受信することもできますが、これは一般的な方法ではありません。
send() メソッドと connect() メソッドの詳細については、connectionName パラメータ(LocalConnection.send() エントリおよび LocalConnection.connect() エントリ)の説明を参照してください。また、allowDomain() エントリおよび domain エントリも参照してください。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| client : Object
コールバックメソッドが呼び出されるオブジェクトを示します。 | LocalConnection | ||
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。 | Object | |
| domain : String [読み取り専用]
現在のファイルが存在するドメインを表すストリングです。 | LocalConnection | ||
![]() | prototype : Object [静的]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。 | Object | |
| メソッド | 定義元 | ||
|---|---|---|---|
LocalConnection オブジェクトを作成します。 | LocalConnection | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | |
この LocalConnection インスタンスに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。 | LocalConnection | ||
この LocalConnection オブジェクトに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。 | LocalConnection | ||
LocalConnection オブジェクトを閉じます (切断します)。 | LocalConnection | ||
send() コマンド (送信側 LocalConnection オブジェクト) からのコマンドを受け取るように LocalConnection オブジェクトを準備します。 | LocalConnection | ||
![]() |
イベントをイベントフローに送出します。 | EventDispatcher | |
![]() |
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | |
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() |
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | |
connect(connectionName) メソッド (受信側 LocalConnection オブジェクト) で確立した接続を使用して、methodName で指定されたメソッドを呼び出します。 | LocalConnection | ||
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。 | Object | |
![]() |
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher | |
| イベント | 概要 | 定義元 | ||
|---|---|---|---|---|
![]() | [ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | ||
| 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。 | LocalConnection | |||
![]() | [ブロードキャスト イベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | ||
| LocalConnection.send() の呼び出しで、異なるセキュリティサンドボックスにデータを送信しようとしたときに送出されます。 | LocalConnection | |||
| LocalConnection オブジェクトがステータスを報告するときに送出されます。 | LocalConnection | |||
| client | プロパティ |
client:Object| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
コールバックメソッドが呼び出されるオブジェクトを示します。デフォルトのオブジェクトは、作成されるローカル接続 this です。client プロパティを別のオブジェクトに設定すると、その別のオブジェクトでコールバックメソッドを呼び出すことができます。
public function get client():Object public function set client(value:Object):voidTypeError — client プロパティは、null 以外のオブジェクトに設定する必要があります。
|
関連項目
| domain | プロパティ |
domain:String [読み取り専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
現在のファイルが存在するドメインを表すストリングです。
Adobe AIR の application セキュリティサンドボックスで実行されているコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)では、スーパードメインの代わりに、ストリング app# に続いて AIR アプリケーションのアプリケーション ID(アプリケーション記述子ファイルで定義)が使用されます。例えば、アプリケーションの connectionName は、アプリケーション ID が com.example.air.MyApp の場合、connectionName は"app#com.example.air.MyApp:connectionName" に解決されます。
Flash Player 9 以降用にパブリッシュされた SWF ファイルでは、ファイルのサブドメインを含む正確なドメインを示すストリングを返します。 たとえば、現在の ファイルが www.adobe.com にある場合は、"www.adobe.com" を返します。
現在のファイルが、Flash Player で実行されているクライアントコンピュータ上のローカルファイルである場合は、"localhost" を返します。
このプロパティの最も一般的な使用方法は、呼び出す受信側 LocalConnection オブジェクトのメソッドのパラメータとして、送信側 LocalConnection オブジェクトのドメイン名を渡すか、LocalConnection.allowDomain() と組み合わせて使用し、特定のドメインのコマンドを受け入れるというものです。同じドメイン内にある LocalConnection オブジェクト間でのみ通信する場合は、通常、このプロパティを使用する必要はありません。
public function get domain():String関連項目
| LocalConnection | () | コンストラクタ |
public function LocalConnection()| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
LocalConnection オブジェクトを作成します。LocalConnection オブジェクトを使用すると、同じクライアントコンピュータ上で実行されている異なるファイル間で通信できるようになります。
関連項目
| allowDomain | () | メソッド |
public function allowDomain(... domains):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
この LocalConnection インスタンスに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。
このメソッドを使用して、セキュアでないプロトコルでホストされている ファイルから、セキュアなプロトコル(HTTPS)を使用してホストされているファイルへのアクセスを許可することはできません。この場合は、allowInsecureDomain() メソッドを使用してくだい。
場合によっては、このメソッドを使用して、ドメインの異なる子ファイルから親ファイルへの LocalConnection 呼び出しを、子ファイルの最終的なドメインが不明な状態でも実行できるようにしたいことがあります。 例えば、ロードバランシングリダイレクトやサードパーティ製サーバーを使用する場合などです。このような場合、ロードに使用される LoaderInfo オブジェクトの url プロパティを使用すれば、allowDomain() メソッドで使用するドメインを取得できます。例えば、Loader オブジェクトを使用して子ファイルをロードする場合は、ファイルがロードされた後、Loader オブジェクトの contentLoaderInfo.url プロパティをチェックすることにより、完全な URL ストリングから子 SWF ファイルのドメインを解析できます。この場合、ファイルがロードされるまで待つようにしてください。ファイルが完全にロードされるまで、contentLoaderInfo.url プロパティが最終的な正しい値に設定されないためです。
また、これとは反対に、ドメインの不明な親からの LocalConnection 呼び出しを子ファイルに受け入れさせたい場合もあります。この場合は、ドメインパラメータが、ロードされたファイルの loaderInfo.url プロパティのドメインに一致するかどうかをチェックすることにより、このメソッドを実装できます。この場合も、loaderInfo.url に含まれている完全な URL からドメインを解析する必要があります。この状況では、親ファイルがロードされるまで待つ必要はありません。親 SWF ファイルは子 SWF ファイルがロードされた時点で既にロードされているからです。
このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。デフォルトでは、LocalConnection オブジェクトはそれを作成した ファイルのサンドボックスに関連づけられ、LocalConnection オブジェクトのクロスドメインでの呼び出しは、受け取る ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
詳しくは、次のトピックを参照してください。
メモ:allowDomain() メソッドは、ActionScript 1.0 および 2.0 での形式から変更されています。これらの以前のバージョンでは、allowDomain は実装するコールバックメソッドでした。ActionScript 3.0 では、allowDomain() はユーザーが呼び出す LocalConnection のビルトインメソッドです。この変更のため、allowDomain() は flash.system.Security.allowDomain() とほぼ同じように動作します。
パラメータ
... domains — LocalConnection 呼び出しを許可するドメインを指定するストリングです。このパラメータには次の 2 つの特殊なケースがあります。
|
ArgumentError — 指定されたすべてのパラメータは、null 以外にする必要があります。
|
関連項目
| allowInsecureDomain | () | メソッド |
public function allowInsecureDomain(... domains):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
この LocalConnection オブジェクトに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。
allowInsecureDomain() メソッドは allowDomain() メソッドと同じように動作しますが、allowInsecureDomain() メソッドは、HTTPS 以外による ファイルから、HTTPS による SWF ファイルへの LocalConnection 呼び出しの送信を許可する点が異なります。この違いは、HTTPS を使用してロードされた ファイルから allowInsecureDomain() メソッドを呼び出す場合にのみ意味があります。同じドメイン内の非 HTTPS と HTTPS の境界を越える場合でも、allowInsecureDomain() メソッドを呼び出す必要があります。デフォルトで、同じドメイン内でも 非 HTTPS ファイルから HTTPS ファイルへの LocalConnection 呼び出しは許可されません。
allowInsecureDomain() を呼び出すことは、HTTPS によるセキュリティが損なわれる恐れがあるため、お勧めできません。HTTPS によってファイルをロードする場合は、ほぼ確実に、ファイルがネットワークでの配信中に不正操作を受けることはありません。 非 HTTPS ファイルから HTTPS ファイルへの LocalConnection 呼び出しを許可した場合、配信中に不正操作された可能性のあるファイルからの呼び出しを受け入れることになります。この場合は、HTTPS ファイルに送られてきた LocalConnection 呼び出しの正当性を信頼できないので、一般に特別な警戒を必要とします。
デフォルトでは、HTTPS プロトコルを使用してホストされたファイルは、HTTPS プロトコルを使用してホストされた他のファイルにのみアクセスできます。 この実装方法により、HTTPS プロトコルが提供する整合性が保たれます。
このメソッドでデフォルトの動作を変更することはお勧めできません。デフォルトの動作を変更すると、HTTPS のセキュリティが損なわれます。ただし、デフォルトの動作を変更せざるをえない場合もあります。例えば、Flash Player 9 以降用にパブリッシュされた HTTPS SWF ファイルに対して、Flash Player 6 以前のバージョン用にパブリッシュされた HTTP SWF ファイルからのアクセスを許可しなければならない場合などです。
セキュリティ情報について詳しくは、以下を参照してください。
パラメータ
... domains — LocalConnection 呼び出しを許可するドメインを指定するストリングです。このパラメータには 2 つの特殊なケースがあります。
|
ArgumentError — 指定されたすべてのパラメータは、null 以外にする必要があります。
|
関連項目
| close | () | メソッド |
public function close():void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
LocalConnection オブジェクトを閉じます (切断します)。このコマンドは、LocalConnection オブジェクトがもうコマンドを受け入れないようにする場合に実行します。例えば、connect() コマンドを、別の SWF ファイルで同じ connectionName パラメータを使用して実行する場合などです。
ArgumentError — LocalConnection インスタンスが接続されていないので、閉じることができません。
|
関連項目
| connect | () | メソッド |
public function connect(connectionName:String):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
send() コマンド(送信側 LocalConnection オブジェクト)からのコマンドを受け取るように LocalConnection オブジェクトを準備します。このコマンドを使用するオブジェクトは受信側 LocalConnection オブジェクトと呼ばれます。受信側と送信側のオブジェクトは、同じクライアントコンピュータ上で実行されている必要があります。
競合状況を避けるため、このメソッドを呼び出す前に、受信側の LocalConnection オブジェクトに関連付けられるメソッドを定義します(LocalConnection クラスの例を参照)。
デフォルトでは、connectionName 引数は "superdomain:connectionName" の値に解決されます。ここで superdomain は、connect() コマンドを含むファイルのスーパードメインを表します。たとえば、受信側 LocalConnection オブジェクトを含む ファイルが www.someDomain.com に配置されている場合、connectionName は "someDomain.com:connectionName" に解決されます。(Flash Player で実行されているファイルがクライアントコンピュータに配置されている場合、superdomain には "localhost" が割り当てられます。)
Adobe AIR の application セキュリティサンドボックスで実行されているコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)では、スーパードメインの代わりに、ストリング app# に続いて AIR アプリケーションのアプリケーション ID(アプリケーション記述子ファイルで定義)が使用されます。例えば、アプリケーションの connectionName は、アプリケーション ID が com.example.air.MyApp の場合、connectionName は"app#com.example.air.MyApp:connectionName" に解決されます。
またデフォルトでは、受信側 LocalConnection オブジェクトは、接続名が "superdomain:connectionName" の値に解決される送信側 LocalConnection オブジェクトからのコマンドだけを受け入れます。このため、同じドメインに置かれているファイル間の通信は簡単です。
同じドメインの ファイル間のみの通信を実装する場合は、先頭がアンダースコア(_)でなくドメイン名を含まないストリングを connectionName に指定します("myDomain:connectionName" など)。connect(connectionName) メソッドと同じストリングを使用してください。
異なるドメイン内のファイル間の通信を実装する場合は、アンダースコア(_)で始まるストリングを connectionName に指定すると、受信側 LocalConnection オブジェクトを含むファイルをドメイン間で移植しやすくなります。考えられる 2 つの状況を次に示します。
connectionName のストリングがアンダースコア(_)で始まっていない場合は、"myDomain:connectionName" のように、スーパードメインとコロンが前に追加されます。これにより、他のドメインの同じ名前を持つ接続との競合は回避できますが、送信側 LocalConnection オブジェクトでも必ずこのスーパードメインを指定する必要があります("myDomain:connectionName" など)。受信側 LocalConnection オブジェクトを含む ファイルが別のドメインに移動された場合は、"anotherDomain:connectionName" のように、新しいスーパードメインに応じて接頭辞が変更されます。すべての送信側 LocalConnection オブジェクトは、新しいスーパードメインを参照するように手動で編集する必要があります。connectionName のストリングがアンダースコア(_)で始まっている場合("_connectionName" など)は、ストリングに接頭辞は追加されません。つまり、受信側と送信側の LocalConnection オブジェクトは、connectionName にまったく同じストリングを使用します。受信側オブジェクトが allowDomain() を使用し、すべてのドメインからの通信を受け入れるように指定した場合は、送信側 LocalConnection オブジェクトを変更せずに、受信側 LocalConnection オブジェクトを含む ファイルを別のドメインに移動させることができます。詳細については、クラスの概要の説明、connectionName(send())の説明、および allowDomain() エントリと domain エントリを参照してください。
メモ : コロンは、connectionName のストリングとスーパードメインを区切る特殊文字として使用されます。connectionName にコロンを含むストリングを指定するのは無効です。
このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。 デフォルトでは、LocalConnection オブジェクトはそれを作成した ファイルのサンドボックスに関連づけられ、LocalConnection オブジェクトのクロスドメインでの呼び出しは、受け取る ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメータ(object タグおよび embed タグ)を設定します。ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
詳しくは、次のトピックを参照してください。
パラメータ
connectionName:String — 受信側 LocalConnection と通信する send() コマンドで指定した接続名に対応するストリング。
|
TypeError — connectionName パラメータに渡される値は null 以外にする必要があります。
| |
ArgumentError — このエラーは、次の 3 つの理由によって発生する可能性があります。1) connectionName パラメータに渡されたストリング値が null だった場合。null 以外の値を渡します。2) connectionName パラメータに渡された値にコロン (:) が含まれていた場合。コロンは、スーパードメインと connectionName ストリングを区切る特殊文字として send() メソッドで使用されます。connect() メソッドでは使用しません。3) LocalConnection インスタンスが既に接続されている場合。
|
関連項目
| send | () | メソッド |
public function send(connectionName:String, methodName:String, ... arguments):void| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
methodName で指定されたメソッドを呼び出します。このとき connect( connectionName ) メソッド(受信側 LocalConnection オブジェクト)で確立された接続が使用されます。このコマンドを使用するオブジェクトは送信側 LocalConnection オブジェクト と呼ばれます。送信側オブジェクトと受信側オブジェクトを含む SWF ファイルは、同じクライアントコンピュータ上で実行されている必要があります。
このコマンドにパラメータとして渡すことができるデータの量は 40 KB に制限されます。シンタックスが正しいにもかかわらず、send() が ArgumentError をスローする場合は、send() 要求を複数に分割してそれぞれを 40 KB より小さくしてみてください。
connect() の項目で説明したように、connectionName にはデフォルトで現在のスーパードメインが追加されます。異なるドメイン間の通信を実装する場合は、送信側と受信側の両方の LocalConnection オブジェクトの connectionName を、現在のスーパードメインが connectionName に追加されないように定義する必要があります。 これには、次の 2 つの方法があります。
connectionName の先頭にアンダースコア(_)を使用します。受信側オブジェクトを含む ファイルでは LocalConnection.allowDomain() を使用して、すべてのドメインからの接続を受け入れるように指定します。この方法では、送信側と受信側のファイルを任意のドメインに配置できます。connectionName にスーパードメインを含めます。例えば、myDomain.com:myConnectionName と指定します。受信側オブジェクトでは、 LocalConnection.allowDomain() を使用して、指定したスーパードメイン (この例では myDomain.com) からの接続を受け入れるか、またはすべてのドメインからの接続を受け入れるように指定します。メモ : 受信側 LocalConnection オブジェクトの connectionName ではスーパードメインを指定できません。スーパードメインを指定できるのは送信側 LocalConnection オブジェクトだけです。
このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。 デフォルトでは、LocalConnection オブジェクトはそれを作成した ファイルのサンドボックスに関連づけられ、LocalConnection オブジェクトのクロスドメインでの呼び出しは、受け取る ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。ブラウザで実行されている SWF コンテンツで、ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含む HTML ページに allowNetworking パラメータ(object タグおよび embed タグ)を設定します。 ただし、Adobe AIR では、application セキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。
詳しくは、次のトピックを参照してください。
パラメータ
connectionName:String — 送信側 LocalConnection オブジェクトと通信するための connect() コマンドで指定された接続名に対応します。
| |
methodName:String — 受信側 LocalConnection オブジェクト内で呼び出されるメソッドの名前。send、connect、close、allowDomain、allowInsecureDomain、client、または domain メソッド名を使用すると、このコマンドは失敗します。
| |
... arguments — 指定するメソッドに渡す追加のパラメータ。このパラメータはオプションです。
|
securityError: — LocalConnection.send() は、呼び出し元のコードがアクセスできないセキュリティ Sandbox から SWF ファイルと通信しようとしました。これは LocalConnection.allowDomain() を受信側で実装することで回避できます。 | |
status: — level プロパティの値が "status" の場合は呼び出しが成功したことを示し、"error" の場合は呼び出しが失敗したことを示します。受信側の SWF ファイルが接続を拒否した場合、呼び出しは失敗する可能性があります。 |
TypeError — connectionName または methodName のいずれかの値が null です。これらのパラメータに null 以外の値を渡します。
| |
ArgumentError — このエラーは、次のうちいずれかの理由で発生する可能性があります。1) connectionName または methodName のいずれかの値が空ストリングである場合。これらのパラメータに有効なストリングを渡します。2) methodName で指定されているメソッドが制限されている場合。3) 送信された直列化メッセージが大きすぎる場合 (40 K 以上)。
|
関連項目
| asyncError | イベント |
flash.events.AsyncErrorEventflash.events.AsyncErrorEvent.ASYNC_ERROR| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。
AsyncErrorEvent.ASYNC_ERROR 定数は、type プロパティ(asyncError イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | イベントを送出するオブジェクトです。 |
error | イベントをトリガしたエラーです。 |
| securityError | イベント |
flash.events.SecurityErrorEventflash.events.SecurityErrorEvent.SECURITY_ERROR| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
LocalConnection.send() の呼び出しで、異なるセキュリティサンドボックスにデータを送信しようとすると送出されます。
SecurityErrorEvent.SECURITY_ERROR 定数は、type プロパティ(securityError イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | セキュリティエラーを報告するネットワークオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
関連項目
| status | イベント |
flash.events.StatusEventflash.events.StatusEvent.STATUS| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
LocalConnection オブジェクトがステータスを報告するときに送出されます。LocalConnection.send() が正常に実行された場合、status イベントオブジェクトの level プロパティの値は "status" になります。また、呼び出しに失敗した場合、level プロパティの値は "error" になります。受信側ファイルで接続が拒否されると、送信側ファイルへの通知なしで呼び出しが失敗する可能性があります。
type プロパティ (status イベントオブジェクト) の値を定義します。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
code | オブジェクトのステータスの説明です。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
level | "status"、"warning"、"error" など、メッセージのカテゴリです。 |
target | そのステータスをレポートするオブジェクトです。 |
関連項目
LocalConnectionSenderExample SWF ファイルでは LocalConnection インスタンスが作成され、ボタンが押されると call() メソッドを使用して SWF ファイル内の lcHandler というメソッドが呼び出されます。このとき接続名「myConnection」が使用され、パラメータとして TextField の内容が渡されます。
LocalConnectionReceiverExample SWF ファイルでは LocalConnection インスタンスが作成され、connect() メソッドが呼び出されて、この SWF ファイルが接続名「myConnection」宛のメッセージの受信者に指定されます。さらにこのクラスには、lcHandler() というパブリックメソッドが含まれています。これは、LocalConnectionSenderExample SWF ファイルによって呼び出されるメソッドです。メソッドが呼び出されると、パラメータとして渡されるテキストがステージ上の TextField に追加されます。
メモ : この例をテストするには、両方の SWF ファイルを同じコンピュータ上に同時にロードする必要があります。
// Code in LocalConnectionSenderExample.as
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.LocalConnection;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.events.StatusEvent;
import flash.text.TextFieldAutoSize;
public class LocalConnectionSenderExample extends Sprite {
private var conn:LocalConnection;
// UI elements
private var messageLabel:TextField;
private var message:TextField;
private var sendBtn:Sprite;
public function LocalConnectionSenderExample() {
buildUI();
sendBtn.addEventListener(MouseEvent.CLICK, sendMessage);
conn = new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);
}
private function sendMessage(event:MouseEvent):void {
conn.send("myConnection", "lcHandler", message.text);
}
private function onStatus(event:StatusEvent):void {
switch (event.level) {
case "status":
trace("LocalConnection.send() succeeded");
break;
case "error":
trace("LocalConnection.send() failed");
break;
}
}
private function buildUI():void {
const hPadding:uint = 5;
// messageLabel
messageLabel = new TextField();
messageLabel.x = 10;
messageLabel.y = 10;
messageLabel.text = "Text to send:";
messageLabel.autoSize = TextFieldAutoSize.LEFT;
addChild(messageLabel);
// message
message = new TextField();
message.x = messageLabel.x + messageLabel.width + hPadding;
message.y = 10;
message.width = 120;
message.height = 20;
message.background = true;
message.border = true;
message.type = TextFieldType.INPUT;
addChild(message);
// sendBtn
sendBtn = new Sprite();
sendBtn.x = message.x + message.width + hPadding;
sendBtn.y = 10;
var sendLbl:TextField = new TextField();
sendLbl.x = 1 + hPadding;
sendLbl.y = 1;
sendLbl.selectable = false;
sendLbl.autoSize = TextFieldAutoSize.LEFT;
sendLbl.text = "Send";
sendBtn.addChild(sendLbl);
sendBtn.graphics.lineStyle(1);
sendBtn.graphics.beginFill(0xcccccc);
sendBtn.graphics.drawRoundRect(0, 0, (sendLbl.width + 2 + hPadding + hPadding), (sendLbl.height + 2), 5, 5);
sendBtn.graphics.endFill();
addChild(sendBtn);
}
}
}
// Code in LocalConnectionReceiverExample.as
package {
import flash.display.Sprite;
import flash.net.LocalConnection;
import flash.text.TextField;
public class LocalConnectionReceiverExample extends Sprite {
private var conn:LocalConnection;
private var output:TextField;
public function LocalConnectionReceiverExample() {
buildUI();
conn = new LocalConnection();
conn.client = this;
try {
conn.connect("myConnection");
} catch (error:ArgumentError) {
trace("Can't connect...the connection name is already being used by another SWF");
}
}
public function lcHandler(msg:String):void {
output.appendText(msg + "\n");
}
private function buildUI():void {
output = new TextField();
output.background = true;
output.border = true;
output.wordWrap = true;
addChild(output);
}
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/net/LocalConnection.html