SWFGateway.js
2008年1月1日
Flashを介して外部やローカルストレージと通信を行う、JavaScript用ライブラリを作りました。
正月って暇だなぁ。
—————————-
SWFGateway.js version 0.2
[tar.gz] [zip] [ソース]
—————————-
- 使うには Flash Player 9 以上が必要です
- 使うだけならasディレクトリは不要です
- 中でSWFObjectを丸々使っています。毎度ありがとうございます
- Flash内で使っている機能の関係で、現在はローカルに置いた場合は動作しないようになっています・・・ナンテコッタイ
- わざわざFlashを介す理由は、クロスブラウザ対応・クロスドメイン対応においてJSと比べて処理が簡単で安定しており、また、JSには無いローカルストレージの使用やソケット通信も可能であるためです。
(1) swf_gateway.js を読み込む
解凍したパッケージをサーバに上げたら、HTMLファイルのheadタグ内で、展開した src/swf_gateway.js を読み込みます。
HTMLファイルと同じ階層内にあると仮定した場合、概ねこんな感じになると思います。
<head> (・・・略・・・) <script type="text/javascript" src="./swf_gateway/src/swf_gateway.js" charset="UTF-8"></script> (・・・略・・・) </head>
(2) swfファイルの出力先を指定する
swfファイルの出力先を指定するために、ブロック要素にidを付けてbody内に記述します。
<body> (・・・略・・・) <div id="swf_gateway_container"></div> (・・・略・・・) </body>
※ブロック要素内にテキストを入れても通常は何も表示されませんが、Flash Player 9以上が入っていない場合はその中のテキストが表示されるようになります。(SWFObjectのwriteインスタンスメソッドと同じ仕様)
(3) SWFGatewayの初期化を行う
上記で記述したブロック要素のすぐ下にscriptタグを記述し、その中に以下のようなJSソースを記述します。
writeメソッドの第1引数は、サーバに上げたライブラリのトップディレクトリまでのパスを指定します。(パスの終端は”/”で終わるように指定して下さい。)
第2引数は、上記で記述したブロック要素のid属性値を指定します。
<script type="text/javascript"> SWFGateway.write("./swf_gateway/", "swf_gateway_container"); </script>
※onloadイベント内に記述しても勿論構いませんダメかもしれない、理由は調査中
以上で設置は終了です。
SWFGateway.requestメソッドで送信します。
例えばこんな感じでリクエストを送信できます。
SWFGateway.request("http://mydomain.net/foo.php", { // "get" or "post" method: "get" // リクエストパラメータをハッシュで指定 ,params: { key1: "value1" ,key2: "バリュー2" } // レスポンス取得時のイベントハンドラ ,handler: function(isCompleted, data){ alert(data); } // 上記イベントハンドラの識別子・・・とりあえず重複しないように書いておけばOK ,handlerId: "valueSender" });
詳細はソースのコメントを参照して下さい・・・。
ローカルストレージに保存する例、第1引数にハッシュ形式で保存する
SWFGateway.saveToLocal({ key1: "value1" ,key2: "バリュー2" });
ローカルストレージから読み出す例
var data = SWFGateway.loadFromLocal(); alert(data.key1); // -> 保存時に"key1"のキーで保存したデータを読み出せる
これも詳細はソースのコメントを参照願います・・・。
次はソケット通信だっ!