エンタープライズ:特集 2003/07/01 15:46:00 更新

JAVA Developer 2003年8月号より転載
FlashとTomcatで実現する使いたくなるWebアプリ (2/10)

●ActionScriptにおける通信

 FlashをWebアプリケーションとして利用するうえで気になるところは、いかに通信を行うかでしょう。Flashでは、ActionScriptで通信を行う方法をいくつか用意しています。

(1)loadVariablesメソッド

 名前のとおり、本来は変数を読み込むことが目的のメソッドですが、Flashムービーファイル(swfファイル)と同じサーバーから取得することになるので、実質的に通信を行います。ムービークリップの変数をHTTPパラメータとして送信し、レスポンスをムービークリップの変数定義として受信します。簡単な例として、リスト2を見てみましょう。

リスト2 loadVariablesでp1、p2を取得
onClipEvent (load) {
    p1="hogera";
    p2=123;
    this.loadVariables(
        "testdata.txt","GET");
}
onClipEvent (data) {
    trace(r1);
    trace(r2);
}

 onClipEventというのは、ムービークリップにおけるイベントハンドラの宣言部になります。onClipEvent (load)は、ムービークリップがロードされた時点で呼び出されます。またonClipEvent (data)は、loadVariablesメソッドやloadMovieメソッドが実行された場合に呼び出されます。つまりonClipEvent (data)は、loadVariablesメソッドのデフォルトコールバック関数に相当します。

 このコードでは、このスクリプトが記述されているムービークリップがロードされたとき、p1およびp2という変数が作成され、つづいてloadVariablesメソッドを呼び出します。パラメータ"GET"は、HTTPメソッドを"GET"に指定しています。ここには、"GET"の代わりに"POST"を指定することも可能です。

 このloadVariablesメソッドが実行されると、次のようなHTTPリクエストが発行されます(実際にHTTPリクエストが発行されるタイミングは、前述したとおり、このメソッドの処理を抜けてからです)。

http://localhost:8080/flashtest/testdata.txt?p1=hogera&p2=123

 このリクエストに対して、次のコンテンツが返されたとすると、

r1=HOGEHOGE&r2=12345

 このムービークリップに対して、r1とr2という変数が定義され、それぞれ"HOGEHOGE"、12345という値をセットされた状態で、イベントハンドラであるonClipEvent (data)が呼び出されます。

 ちなみに、このレスポンスボディは、標準のMIME形式「application/x-www-form-urlencoded」でなければなりません。またFlash MXでは、loadVariablesメソッドの代わりに、LoadVarsオブジェクトを利用することもできます。

(2)XMLオブジェクトの利用

 ActionScriptにおける通信で、もう1つの簡単な方法がXMLオブジェクトを利用したものです。XMLオブジェクトはその名のとおりXMLをハンドリングするためのオブジェクトで、DOMに相当します。loadVariablesメソッドと同様に、loadメソッドを利用することで、簡単にXMLファイルをダウンロード(読み込み)することができます。

 リスト3に例を示します。リスト1と違い、「data.onLoad = loaded;」の行でコールバックメソッドを指定しています。そして、ロードされたXMLドキュメントに対する処理は、そのコールバックメソッドの中で行っています。

リスト3 XMLオブジェクトを使った通信
function loadxml2()
{
    data = new XML();
    data.onLoad = loaded;
    data.load ("sample.xml");
}
function loaded (success)
{
    if (success)
    {
        result = analyzeXML(data);
    }
}

(3)そのほかの通信手段

 Flashが標準で用意しているそのほかの通信手段としては、XMLSocketオブジェクトを使った通信方法があります。これは、通信相手とのコネクションを保持したままで、XML文書をやりとりするものです。オンラインゲームやチャットのように、リアルタイム性の必要なアプリケーションに適しています。

 また、サーバー側に専用のソフトウェアである「Flash Remoting」や「Flash Communication Server」をセットアップし、それらを利用した通信方法も用意されています。

 ここまで通信手段を紹介してきましたが、実際に通信するデータの文字コード(文字エンコーディング)について簡単に触れておきます。

 Flash 5まではデフォルトの文字エンコーディングは「シフトJIS」でしたが、Flash MXは「UTF-8」が採用されています。Flash MXでは、外部リソースから文字を読み込む場合もデフォルトではUTF-8が適用されます。文字エンコーディングをシフトJISにしたい場合は、「System.useCodepage=true」と宣言することで(後述のリスト4参照)、シフトJISの日本語文字列を読み込むことが可能となります。

前のページ | 1 2 3 4 5 6 7 8 9 10 | 次のページ

[佐藤 毅,JAVA Developer]

Copyright © ITmedia, Inc. All Rights Reserved.