FlashとCGIとの連携の方法 (AS3.0)
FlashとCGIの連携を行ってみました。サーバサイドではPHPやJavaと連携した紹介が多いので、今回はPerlを使ってみたいと思います。
以下がサーバサイドのソースです。受けたデータをそのまま返します。
use CGI qw(:cgi); my$cgi = new CGI; print $cgi -> header( 'text/plain' ). "value=". $cgi -> param( 'val' ); exit;
value=”値” のようにクエリ型で返します。valueの部分は変更可能です。また複数の値を返したい場合は、value=”値”&value2=”値”のように&でつなげて返します。
今回外していますが、ヘッダの”expire”を”0″にするとFlash側で値を受け取れないようです。
次にFlash側のソースです。
var url_vars:URLVariables = new URLVariables( ); url_vars.val = "連携テスト"; //<- サーバへ渡す値 var url_req:URLRequest = new URLRequest( ); url_req.url = "サーバサイドスクリプトのパスを記述"; url_req.method = URLRequestMethod.POST; url_req.data = url_vars; var url_load:URLLoader = new URLLoader( ); url_load.dataFormat = URLLoaderDataFormat.VARIABLES; url_load.addEventListener ( Event.COMPLETE, compHandler ); url_load.load ( url_req ); function compHandler ( event:Event ):void { var vars:URLVariables = new URLVariables( event.target.data ); var r:String = vars.value; resultText.appendText( r ); }
解説:
- 2行目のvalというキーに”連携テスト”という値を代入しています。val部分は任意ですが、サーバ側の受け取り部分と同じにする必要があります。
- 18行目でサーバからの取得値を変数に格納しています。
- 19行目は今回”resultText”というダイナミックテキストエリアへ反映させています。
また、ロードだけ行いたい場合は、1、2、7、8行目を外します。
今回、以下のポストが非常に参考になりました。
http://www.at-sonic.com/blog/archives/2008/02/as3php.php
http://nashiko.net/blog/1069