【ActionScript】【Flex】外部からデータを受け取って表示する
Javaとの連携が上手く行かなかったので、.jsonのデータを直接プロジェクト内に突っ込んで、コンパイルさせました。
src内のjsonフォルダの中に、member.jsonが入っています。
必要な関数
- 読み込み
- 読み込み成功時の関数イベントをAddEventlistener()する
- 読み込み失敗時の関数イベントをAddEventlistener()する
- 読み込み成功時の関数
- 読み込み失敗時の関数
読み込み関数
public function first_create():void{ var request_url:String = "json/member.json"; var loader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest(request_url); // 【4】データ読み込み完了イベントのイベントハンドラの設定 loader.addEventListener(Event.COMPLETE,loadCompleteHandler); // 【5】IOエラーイベントハンドラの設定 loader.addEventListener(ErrorEvent.ERROR,ioErrorHandler); // 【6】URLLoaderオブジェクトにURLRequestオブジェクトを // 関連付けて、通信処理開始 loader.load(req); }
読み込み成功時関数(※show_jsonというidのTextがMXMLで存在している)
private function loadCompleteHandler(event:Event):void{ json_data = event.target.data; json = JSON.decode(json_data); show_json.text = json_data; }
読み込み失敗時関数(※show_jsonというidのTextがMXMLで存在している)
private function ioErrorHandler():void{ json_data = "できてないよーん"; }
結果
最初は1つの関数内でload.dataを取ってこようとして上手く行かなかったのですが…
http://d.hatena.ne.jp/silphire/20080529/1212080207
のサイトによると
つまり、load()した関数の中で受信したデータを取得することが出来ない。なので、データの取得をリクエストする関数と、実際に取得する関数を別にするという設計にせざるを得ない。
とのことなので…
上の用に直してみました。
これなら上手く行きました。