読者です 読者をやめる 読者になる 読者になる

【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()した関数の中で受信したデータを取得することが出来ない。なので、データの取得をリクエストする関数と、実際に取得する関数を別にするという設計にせざるを得ない。

とのことなので…
上の用に直してみました。
これなら上手く行きました。