タイトルの通り、FlashからJSONファイルの書き出しをやってみました。
今回は、「Flashからphpファイルに値を渡して、それをJSON形式で書き出す」という流れです。
こちらのサイトにphpとFlashの連携方法が書かれていたので、そちらを参考にしつつ行いました。
AS3でPHPと通信する
【ConnectPHP.as】
phpファイルにデータを送信 + phpファイルを実行
package connectphp { import flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class ConnectPHP extends EventDispatcher { public static const COMPLETE:String = "connectPHP_complete"; /** * コンストラクタ */ public function ConnectPHP(url:String = null, variables:Object = null) { if (url && variables) { sendAndLoad(url, variables); } } /** * phpファイルにデータの内容を送信する * @param {String} : phpデータのパス * @param {String} : データの中身 */ public function sendAndLoad(url:String, variables:Object):void { var urlRequest:URLRequest = new URLRequest(url); // php に送信するデータをオブジェクト形式で保存する var urlVariables:URLVariables = new URLVariables(); // 引数のデータを全て渡す for (var i:String in variables) { urlVariables[i] = variables[i]; } // urlRequest.dataに渡す urlRequest.data = urlVariables; // phpへの送信方法 urlRequest.method = URLRequestMethod.POST; // phpファイルをリクエスト var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; urlLoader.addEventListener(Event.COMPLETE, completeHandler); urlLoader.load(urlRequest); } /** * phpファイルの呼び出しが終了したときのイベントハンドラ */ private function completeHandler(e:Event):void { // イベントディスパッチ dispatchEvent(new Event(COMPLETE)); } } }
【data.php】
phpファイル
このファイルを通せば、"name".jsonというJSON形式のファイルが出来上がります。
【Main.as】
メインのドキュメントクラス
package connectphp { import flash.display.MovieClip; import flash.events.Event; import connectphp.*; public class Main extends MovieClip { /** * コンストラクタ */ public function Main() { // 保存したいデータのオブジェクトを作る var userData:Object = { // 名前 name: "tanaka", // 買い物リスト item:[ "ファブリーズ", "ジョイ", "キャベツ", "カレールー", "じゃがいも" ] }; // オブジェクトをJSON形式の文字列に変換 var userDataForJson:String = JSON.stringify(userData); // 送るデータ var sendData:Object = new Object(); sendData.name = userData.name.toString(); sendData.userData = userDataForJson; // データをphpに送る var connectPHP:ConnectPHP = new ConnectPHP(); connectPHP.addEventListener(ConnectPHP.COMPLETE, completeHandler); connectPHP.sendAndLoad("data.php", sendData); } private function completeHandler(e:Event):void { trace("送信完了"); } } }
0 件のコメント:
コメントを投稿