パッケージflash.net
public class LocalConnection
継承LocalConnection Inheritance EventDispatcher Inheritance Object

LocalConnection クラスを使用すると、単一 SWF ファイルまたは複数の SWF にまたがる別の LocalConnection オブジェクトでメソッドを呼び出す LocalConnection オブジェクトを作成できます。ローカル接続により、fscommand() または JavaScript を使用しなくても、この種類の SWF ファイル間の通信が可能になります。LocalConnection オブジェクトを使って通信できるのは、同じクライアントコンピュータ上で実行中の SWF ファイルだけです。ただし、これらは異なるアプリケーションで実行されていてもかまいません。たとえば、ブラウザで実行されている SWF ファイルと、プロジェクタで実行されている SWF ファイルとの間で通信することもできます。 プロジェクタとは、スタンドアローンアプリケーションとして実行可能な形式で保存した SWF ファイルです。Flash Player は必要ありません。

ActionScript 3.0 で作成された LocalConnection オブジェクトは、ActionScript 1.0 または 2.0 で作成された LocalConnection オブジェクトと通信できます。また、その逆も可能です。ActionScript 1.0 または 2.0 で作成された LocalConnection オブジェクトは、ActionScript 3.0 で作成された LocalConnection オブジェクトと通信できます。Flasn Player では、このようなバージョンの異なる LocalConnection オブジェクト間の通信が自動的に処理されます。

各ファイルで使用されるコマンドを確認することで、2 つの SWF ファイル間で通信を行うための LocalConnection オブジェクトの使用方法が理解しやすくなります。ある SWF ファイルは送信側 SWF ファイルと呼ばれており、呼び出されるメソッドが含まれています。この送信側 SWF ファイルには、LocalConnection オブジェクトと send() メソッドの呼び出しが含まれている必要があります。他の SWF ファイルは受信側 SWF ファイルと呼ばれており、メソッドを呼び出すファイルです。この受信側 SWF ファイルには、送信側 SWF ファイルとは別の LocalConnection オブジェクトと connect() メソッドの呼び出しが含まれている必要があります。

send()connect() のどちらを使用するかは、SWF ファイルが同じドメイン内にある場合、予測可能なドメイン名を持つ異なるドメインにある場合、予測不可能または動的なドメイン名を持つ異なるドメインにある場合により異なります。次の段落では、上記の 3 つの場合それぞれについて、サンプルコードを使用して説明します。

同じドメインの場合 :LocalConnection オブジェクトの最も簡単な使用方法は、同じドメイン内の LocalConnection オブジェクト間だけで通信を許可することです。これは、Flash Player ではデフォルトで同一ドメイン通信が許可されているためです。同じドメインにある 2 つの SWF ファイル同士で通信を行う場合、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 オブジェクトを持つ SWF ファイルの移植性をドメイン間で高める場合もあります。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 つの SWF ファイル内でデータを送受信することもできますが、これは一般的な方法ではありません。

send() メソッドと connect() メソッドの詳細については、LocalConnection.send() エントリおよび LocalConnection.connect() エントリの connectionName パラメータの説明を参照してください。また、allowDomain() エントリおよび domain エントリも参照してください。

例の表示

関連項目

flash.net.LocalConnection.send()
flash.net.LocalConnection.allowDomain()
flash.net.LocalConnection.domain
他の Flash Player インスタンスへの接続


パブリックプロパティ
 プロパティ定義
  client : Object
コールバックメソッドが呼び出されるオブジェクトを示します。
LocalConnection
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  domain : String
[read-only] 現在の SWF ファイルが存在するドメインを表すストリングです。
LocalConnection
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義
  LocalConnection()
LocalConnection オブジェクトを作成します。
LocalConnection
 InheritedaddEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  allowDomain(... domains):void
この LocalConnection インスタンスに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。
LocalConnection
  allowInsecureDomain(... domains):void
この LocalConnection オブジェクトに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。
LocalConnection
  close():void
LocalConnection オブジェクトを閉じます (切断します)。
LocalConnection
  connect(connectionName:String):void
send() コマンド (送信側 LocalConnection オブジェクト) からのコマンドを受け取るように LocalConnection オブジェクトを準備します。
LocalConnection
 InheriteddispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
EventDispatcher
 InheritedhasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedremoveEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  send(connectionName:String, methodName:String, ... arguments):void
connect(connectionName) メソッド (受信側 LocalConnection オブジェクト) で確立した接続を使用して、methodName で指定されたメソッドを呼び出します。
LocalConnection
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
 InheritedwillTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント一覧定義
  asyncError 非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。LocalConnection
  securityError LocalConnection.send() への呼び出しで、異なるセキュリティサンドボックスにデータを送信しようとすると送出されます。LocalConnection
  status LocalConnection オブジェクトがステータスを報告するときに送出されます。LocalConnection
プロパティの詳細
clientプロパティ
client:Object  [read-write]

コールバックメソッドが呼び出されるオブジェクトを示します。デフォルトのオブジェクトは、作成されるローカル接続 this です。client プロパティを別のオブジェクトに設定し、コールバックメソッドをその別のオブジェクトで呼び出すことができます。

実装
    public function get client():Object
    public function set client(value:Object):void

Throws
TypeError client プロパティは、null 以外のオブジェクトに設定する必要があります。

関連項目

domainプロパティ 
domain:String  [read-only]

現在の SWF ファイルが存在するドメインを表すストリングです。

Flash Player 9 以降用にパブリッシュされた SWF では、現在の SWF ファイルのサブドメインを含むドメインを示すストリングを返します。たとえば、現在の SWF ファイルが www.adobe.com にある場合は、"www.adobe.com" を返します。

現在の SWF ファイルがクライアントコンピュータ上のローカルファイルである場合は、"localhost" を返します。

このプロパティの最も一般的な使用方法は、呼び出す受信側 LocalConnection オブジェクトのメソッドのパラメータとして、送信側 LocalConnection オブジェクトのドメイン名を渡すか、LocalConnection.allowDomain() と組み合わせて使用し、特定のドメインのコマンドを受け入れるというものです。同じドメイン内にある LocalConnection オブジェクト間でのみ通信する場合は、通常、このプロパティを使用する必要はありません。

実装
    public function get domain():String

関連項目

コンストラクタの詳細
LocalConnection()コンストラクタ
public 関数 LocalConnection()

LocalConnection オブジェクトを作成します。LocalConnection オブジェクトを使用すると、同じクライアントコンピュータ上で実行している異なる SWF ファイル間で通信できるようになります。

関連項目

メソッドの詳細
allowDomain()メソッド
public function allowDomain(... domains):void

この LocalConnection インスタンスに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。デフォルトでは、LocalConnection オブジェクトはそれを作成した SWF ファイルのサンドボックスに関連づけられ、LocalConnection オブジェクトのクロスドメインでの呼び出しは、受け取る SWF ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。

詳細については、次のトピックを参照してください。

メモ :allowDomain() メソッドは、ActionScript 1.0 および 2.0 の形式から変更されています。これらの以前のバージョンでは、allowDomain は実装するコールバックメソッドでした。ActionScript 3.0 では、allowDomain() はユーザーが呼び出す LocalConnection のビルトインメソッドです。この変更のため、allowDomain()flash.system.Security.allowDomain() とほぼ同じように動作します。

パラメータ
... domains — LocalConnection 呼び出しを許可するドメインを指定するストリングです。このパラメータには次の 2 つの特殊なケースがあります。
  • ワイルドカード文字 "*" を使用して、すべてのドメインからの呼び出しを許可できます。
  • "localhost" というストリングを指定して、ローカル環境にインストールされている SWF ファイルからこの SWF ファイルへの呼び出しを許可することができます。Flash Player 8 から、ローカル SWF ファイルに関するセキュリティ制限が導入されました。デフォルトでは、インターネットへのアクセスを許可された SWF ファイルは、ローカルファイルシステムにアクセスできません。"localhost" を指定すると、すべてのローカル SWF ファイルがこの SWF ファイルにアクセスできます。

スロー
ArgumentError — 指定されたすべてのパラメータは、null 以外にする必要があります。

関連項目

allowInsecureDomain()メソッド 
public function allowInsecureDomain(... domains):void

この LocalConnection オブジェクトに LocalConnection 呼び出しを送信できる 1 つ以上のドメインを指定します。

allowInsecureDomain() メソッドは allowDomain() メソッドと同じように動作しますが、allowInsecureDomain() メソッドは、HTTPS 以外による SWF ファイルから、HTTPS による SWF ファイルへの LocalConnection 呼び出しの送信を許可する点が異なります。この違いは、HTTPS を使用してロードされた SWF ファイルから allowInsecureDomain() メソッドを呼び出す場合にのみ意味があります。同じドメイン内の非 HTTPS と HTTPS の境界を越える場合でも、allowInsecureDomain() メソッドを呼び出す必要があります。デフォルトで、同じドメイン内でも 非 HTTPS SWF ファイルから HTTPS SWF ファイルへの LocalConnection 呼び出しは許可されません。

allowInsecureDomain() を呼び出すことは、HTTPS によって提供されるセキュリティが損なわれるため、お勧めしません。HTTPS によって SWF ファイルをロードする場合は、SWF ファイルがネットワークによる配信中に不正操作を受けないことを十分に確信できます。非 HTTPS SWF ファイルによる HTTPS SWF ファイルへの LocalConnection 呼び出しを許可した場合、配信中に不正操作された可能性のある SWF からの呼び出しを受け付けることになります。これは、HTTPS SWF ファイルに到着した LocalConnection 呼び出しの正当性を信頼できないため、一般に特別な警戒を必要とします。

デフォルトでは、HTTPS プロトコルを使用してホストされた SWF ファイルは、HTTPS プロトコルを使用してホストされた SWF ファイルにのみアクセスできます。この実装方法により、HTTPS プロトコルが提供する整合性が保たれます。

このメソッドでデフォルトのビヘイビアを変更することはお勧めできません。デフォルトのビヘイビアを変更すると、HTTPS のセキュリティが損なわれます。ただし、デフォルトの動作を変更せざるをえない場合もあります。たとえば、Flash Player 9 以降用にパブリッシュされた HTTPS ファイルに対して、Flash Player 6 またはそれ以前のバージョン用にパブリッシュされた HTTP ファイルからのアクセスを許可しなければならない場合などです。

詳細については、次のトピックを参照してください。

パラメータ
... domains — LocalConnection 呼び出しを許可するドメインを指定するストリングです。このパラメータには 2 つの特殊なケースがあります。
  • ワイルドカード文字 "*" を指定して、すべてのドメインからの呼び出しを許可できます。"*" を指定する場合、ローカルホストは含まれません。
  • "localhost" というストリングを指定して、ローカル環境にインストールされている SWF ファイルからこの SWF ファイルへの呼び出しを許可することができます。Flash Player 8 から、ローカル SWF ファイルに関するセキュリティ制限が導入されました。これにより、インターネットへのアクセスを許可された SWF ファイルは、ローカルファイルシステムにはアクセスできません。"localhost" を指定すると、すべてのローカル SWF ファイルがこの SWF ファイルにアクセスできます。オーサリング時に、呼び出し元の SWF ファイルをネットワークにアクセス許可されたローカル SWF ファイルとして指定する必要もあります。

スロー
ArgumentError — 指定されたすべてのパラメータは、null 以外にする必要があります。

関連項目

close()メソッド 
public function close():void

LocalConnection オブジェクトを閉じます (切断します)。このコマンドは、LocalConnection オブジェクトでそれ以上コマンドを受け入れない場合に実行します。たとえば、他の SWF ファイルで同じ connectionName パラメータを使用して connect() コマンドを実行する場合などです。


スロー
ArgumentError — LocalConnection インスタンスが接続されていないため、閉じることができません。

関連項目

connect()メソッド 
public function connect(connectionName:String):void

send() コマンド (送信側 LocalConnection オブジェクト) からのコマンドを受け取るように LocalConnection オブジェクトを準備します。このコマンドを使用するオブジェクトは "受信側 LocalConnection オブジェクト" と呼ばれます。受信側と送信側のオブジェクトは、同じクライアントコンピュータ上で実行する必要があります。

競合状況を避けるため、このメソッドを呼び出す前に、LocalConnection クラスの例に示すように、受信側の LocalConnection オブジェクトに関連付けられているメソッドを定義します。

デフォルトでは、Flash Player は connectionName を解決して "superdomain:connectionName" にします。ここで、superdomain は、connect() コマンドを含む SWF ファイルのスーパードメインを表します。たとえば、受信側 LocalConnection オブジェクトを含む SWF ファイルが www.someDomain.com に配置されている場合、connectionName"someDomain.com:connectionName" に解決されます。SWF ファイルがクライアントコンピュータに配置されている場合、superdomain には "localhost" が割り当てられます。

またデフォルトでは、受信側 LocalConnection オブジェクトは、接続名が "superdomain:connectionName" の値に解決される送信側 LocalConnection オブジェクトからのコマンドだけを受け入れます。このため、同じドメインに置かれている SWF ファイル間の通信は簡単です。

同じドメインの SWF ファイル間でのみ通信を行う場合は、connectionName に対して、先頭がアンダースコア (_) 以外で、ドメイン名を含まないストリングを指定します ("myDomain:connectionName" など)。connect(connectionName) メソッドと同じストリングを使用してください。

異なるドメイン内の SWF ファイル間の通信を実装する場合は、connectionName にアンダースコア (_) で始まるストリングを指定すると、受信側 LocalConnection オブジェクトを含む SWF のドメイン間でのポータビリティが高まります。考えられる 2 つの状況を次に示します。

詳細については、クラスの概要の説明、send()connectionName の説明、および allowDomain() エントリと domain エントリを参照してください。

メモ :コロンは、connectionName のストリングとスーパードメインを区切る特殊文字として使用されます。connectionName にコロンを含むストリングを指定するのは無効です。

パラメータ
connectionName:String — 受信側 LocalConnection と通信する send() コマンドで指定した接続名に対応するストリング。

スロー
TypeError connectionName パラメータに渡される値は null 以外にする必要があります。
 
ArgumentError — このエラーは、次の 3 つの理由によって発生する可能性があります。1) connectionName パラメータに渡されたストリング値が null だった場合。null 以外の値を渡します。2) connectionName パラメータに渡された値にコロン (:) が含まれていた場合。コロンは、connect() メソッドではなく send() メソッドで、スーパードメインと connectionName ストリングを区切る特別な文字として使用されます。3) LocalConnection インスタンスが既に接続されている場合。

関連項目

send()メソッド 
public function send(connectionName:String, methodName:String, ... arguments):void

connect(connectionName) メソッド (受信側 LocalConnection オブジェクト) で確立した接続を使用して、methodName で指定されたメソッドを呼び出します。このコマンドを使用するオブジェクトは "送信側 LocalConnection オブジェクト" と呼ばれます。送信側オブジェクトと受信側オブジェクトを含む SWF ファイルは、同じクライアントコンピュータ上で実行する必要があります。

このコマンドにパラメータとして渡すことができるデータの量は 40 KB に制限されます。シンタックスが正しいにもかかわらず、send()ArgumentError をスローする場合は、send() 要求を複数に分割してそれぞれを 40 KB より小さくしてみてください。

connect() エントリで説明されているように、デフォルトでは connectionName に現在のスーパードメインが追加されます。異なるドメイン間で通信を行う場合は、送信側と受信側の両方の LocalConnection オブジェクトで、現在のスーパードメインが追加されないように connectionName を定義する必要があります。これには、次の 2 つの方法があります。

メモ :受信側 LocalConnection オブジェクトの connectionName ではスーパードメインを指定できません。スーパードメインを指定できるのは送信側 LocalConnection オブジェクトだけです。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。デフォルトでは、LocalConnection オブジェクトはそれを作成した SWF ファイルのサンドボックスに関連づけられ、LocalConnection オブジェクトのクロスドメインでの呼び出しは、受け取る SWF ファイルで LocalConnection.allowDomain() メソッドが呼び出されていない限り許可されません。

詳細については、次のトピックを参照してください。

パラメータ
connectionName:String — 送信側 LocalConnection オブジェクトと通信するための connect() コマンドで指定された接続名に対応します。
 
methodName:String — 受信側 LocalConnection オブジェクト内で呼び出されるメソッドの名前。次のメソッド名を使用すると、このコマンドは失敗します。sendconnectcloseallowDomainallowInsecureDomainclient、および domain
 
... arguments — 指定するメソッドに渡す追加のパラメータ。このパラメータはオプションです。

イベント
securityError:SecurityErrorEventLocalConnection.send() は、呼び出し元のコードがアクセスできないセキュリティ Sandbox から SWF ファイルと通信しようとしました。これは LocalConnection.allowDomain() を受信側で実装することで回避できます。
 
status:StatusEventlevel プロパティの値が "status" の場合は呼び出しが成功したことを示し、"error" の場合は呼び出しが失敗したことを示します。受信側の SWF ファイルが接続を拒否した場合、呼び出しは失敗する可能性があります。

スロー
TypeError connectionName または methodName のいずれかの値が null です。これらのパラメータに null 以外の値を渡します。
 
ArgumentError — このエラーは、次のうちいずれかの理由で発生する可能性があります。1) connectionName または methodName のいずれかの値が空ストリングである場合。これらのパラメータに有効なストリングを渡します。2) methodName で指定されているメソッドが制限されている場合。3) 送信された直列化メッセージが大きすぎる場合 (40 K 以上)。

関連項目

イベントの詳細
asyncErrorevent 
イベントオブジェクトの型: flash.events.AsyncErrorEvent
AsyncErrorEvent.type property = flash.events.AsyncErrorEvent.ASYNC_ERROR

非同期形式で、つまりネイティブ非同期コードから例外がスローされると送出されます。

AsyncErrorEvent.ASYNC_ERROR 定数は、asyncError イベントオブジェクトの type プロパティ値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetネットワーク操作エラーが発生したオブジェクトです。
errorイベントをトリガしたエラーです。
securityErrorevent  
イベントオブジェクトの型: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR

LocalConnection.send() への呼び出しで、異なるセキュリティサンドボックスにデータを送信しようとすると送出されます。

SecurityErrorEvent.SECURITY_ERROR 定数は、securityError イベントオブジェクトの type プロパティ値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetセキュリティエラーを報告するネットワークオブジェクトです。
textエラーメッセージとして表示されるテキストです。

関連項目

statusevent  
イベントオブジェクトの型: flash.events.StatusEvent
StatusEvent.type property = flash.events.StatusEvent.STATUS

LocalConnection オブジェクトがステータスを報告するときに送出されます。LocalConnection.send() が正常に実行された場合、status イベントオブジェクトの level プロパティの値は "status" になります。また、呼び出しに失敗した場合、level プロパティの値は "error" になります。受信側 SWF ファイルで接続が拒否されると、送信側 SWF ファイルへの通知なしで呼び出しが失敗する可能性があります。

status イベントオブジェクトの type プロパティの値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
codeオブジェクトのステータスの説明です。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
level"status""warning""error" など、メッセージのカテゴリです。
targetそのステータスをレポートするオブジェクトです。

関連項目


このサンプルは、2 つの異なる SWF ファイルにコンパイルする 必要のある 2 つの ActionScript クラスから構成されています。

LocalConnectionSenderExample SWF ファイルでは、LocalConnection インスタンスが作成され、 ボタンを押すと、call() メソッドが使用され、 "myConnection" という接続名の SWF ファイルに存在する lcHandler というメソッドが呼び出されます。 このとき、パラメータとして TextField のコンテンツが渡されます。

LocalConnectionReceiverExample SWF ファイルでは、LocalConnection インスタンスが作成され、 この SWF ファイルをメッセージの受信者として指定するための connect() メソッドが呼び出されます。この受信者は、 "myConnection" という接続に割り当てられます。また、このクラスには、 LocalConnectionSenderExample SWF ファイルから呼び出される lcHandler() という パブリックメソッドが含まれます。メソッドが呼び出されると、 パラメータとして渡されるテキストが Stage 上の 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);
        }
    }
}