2013年12月7日土曜日

FlashからJSON書き出し

タイトルの通り、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 件のコメント:

コメントを投稿