Flexの実行環境であるFlashPlayerには、FlashPlayerの外部との連携のための機構が備わっています。状況に応じて利用することで、FlashPlayerの機能を超えた範囲までFlexアプリケーションの利用シーンを広げることができるでしょう。
SharedObjectを用いると、Webブラウザのクッキーのようにクライアントのマシン上にデータを保存できます。そのため、SharedObjectを利用して、ユーザーが一度入力した情報を次回ユーザーがアクセスしたときに再び表示するなどといったことを、サーバの技術を使用せずに行うことができます。
サンプルでは、リロードするたびに訪問回数をカウントするアプリケーションを紹介します。
サンプル1 |
SharedObjectSample.mxml |
<?xml version="1.0" encoding="utf-8"?> |
SharedObject.getLocal(名前)とすることで、SharedObjectのインスタンスを取得します。初回にはデータファイルがローカル上に作成されます。SharedObjectは実行されているSWFのドメインごとにアクセス制御されます。
永続化したいデータをdataプロパティの内部に格納し、flush()メソッドを実行することで、書き込みが行われます。データを消去するにはclear()メソッドを使用します。
SharedObjectの使用に際して注意する点があります。ローカルの領域としてSharedObjectが使用できる容量はデフォルトで100Kbytesですが、ユーザー側で0Kbyte(なし)〜無制限まで設定することができますので、必ずしも有効であるとは限りません。必要な場合はユーザーに設定を促すか、SharedObjectはあくまでも補助的な利用にとどめるのがいいでしょう。
容量を変更するには、FlashPlayer上で右クリックして表示される[設定]メニューを選択して開く、[Adobe Flash Player設定]ウィンドウから[ローカル記憶領域]のスライダーを調節します。
LocalConnectionを用いると、同一のクライアントマシン上で動作している複数のSWF間で通信ができます。LocalConnectionを使用するには、送信用と受信用のSWFを作成し、それぞれ処理を記述する必要があります。
以下は、テキストインプットに入力した文字を別のSWFに渡すサンプルです。
サンプル2 受信側 |
サンプル3 送信側 |
受信用をReceiverSample.mxml、送信用をSenderSample.mxmlとします。
ReceiverSample.mxml |
<?xml version="1.0" encoding="utf-8"?> |
受信側では、LocalConnectionを待ち受け状態にするために、connect()メソッドでコネクション名を指定します。
また、LocalConnectionを通じて実行されるメソッドを用意します。サンプルでは、sampleMethod(prop:Array):voidとします。引数は配列で渡されます。
LocalConnectionを通じて実行されるメソッドを実装しているオブジェクトをclientに指定します。今回は、ReceiverSampleにsampleMethodを定義しましたので、clientにはthisを指定しています。
SenderSample.mxml |
<?xml version="1.0" encoding="utf-8"?> |
送信側では、送信を行いたいタイミングでsend()メソッドを実行します。第1引数には待ち受け状態になっているLocalConnectionのコネクション名を指定し、第2引数には、実行するメソッド名を文字列で指定します。第3引数には、メソッドに渡す引数を配列で指定します。
続いて次ページでは、FlexからJavaScriptを、JavaScriptからFlexを呼び出すための実践テクニックを解説します。
Copyright © ITmedia, Inc. All Rights Reserved.