AS3とPHPの連携方法のサンプル。
今回は、PHPに配列(Array)や連想配列(Object)を渡します。
サンプルはこちら。
以下、ソースです。
AS3側
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.text.TextField;
[SWF(backgroundColor="0xFFFFFF")]
public class php_access3 extends Sprite
{
private const ary1:Array=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
private const ary2:Object={No1:"cat", No2:"dog", No3:"pig"};
public function php_access3()
{
// ステージの設定
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
// リクエストの準備
var req:URLRequest=new URLRequest("PHPファイルまでのパス");
req.method=URLRequestMethod.POST;
// PHPに渡すパラメータ
var param:URLVariables=new URLVariables();
// 配列を渡す
for(var i:int=0; i < 10; i++) param["ary1[" + i + "]"]=ary1[i];
// Object型(連想配列)を渡す
for(var key:String in ary2) param["ary2[" + key + "]"]=ary2[key];
req.data=param;
// ローダー
var loader:URLLoader=new URLLoader();
loader.dataFormat=URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(req);
}
// 通信が成功したら実行される関数
private function onComplete(e:Event):void
{
var loader:URLLoader=e.target as URLLoader;
loader.removeEventListener(Event.COMPLETE, onComplete);
// 結果を表示
var t:TextField=new TextField;
t.text="PHPに普通の配列と連想配列を渡します。\n\n";
t.width=500;
addChild(t);
t.x=t.y=10;
var data:URLVariables=new URLVariables(loader.data);
for(var key:String in data) t.appendText(data[key] + "\n\n");
}
}
}
PHP側
<?php // Flash側から配列を受け取る $ary1 = $_POST["ary1"]; $ary2 = $_POST["ary2"]; // 変数いろいろ $str1 = ""; $str2 = ""; $sum = 0; $len = count($ary1); // ary1の中身を解析 for($i = 0 ; $i < $len ; $i++)$sum += $ary1[$i]; // ary2の中身を解析 foreach($ary2 as $key => $val) $str2 = $str2.$key.":".$val." "; // 出力 echo "result1 = sum = ".$sum; echo "&"; echo"result2 = ".$str2; ?>