ICC


サンプルをダウンロード(252KB)

注: Flashではドメイン間通信を禁止しているため,このサンプルではRSSの読み込み部分はPHPのスクリプトを使用しています.

このドキュメントをお読みになる前に,「PHPを使用したRSSの取得方法」もご参照ください.


1. サーバからRSSを受信する

XMLHttpRequestを使用し,サーバからRSSを受信します.
この際,以下の形式で受信するようにします.

  • channel要素を連想配列に取り出す
  • item要素は1つの要素を独立して取り込み,その内容を連想配列で取り出す
  • item要素の数を取得する

図にすると以下のようになります.
配列 channel title
link
description
items count
item title
link
description
item(要素数繰り返し)



2. 読み込んだRSSを表示する(PHP側)

配列の作成
(PHPでのRSSパース方法は「PHPを使用したRSSの取得方法」を参考にしてください)
channel要素を作成するスクリプトは以下のようになります.

// channel要素
	print '{"channel": ';
	print '{"title":"' . $channel['title'] . '", ' .
		   '"date": "' . $channel['date'] . '", '.
		   '"description": "' . $channel['description'] . '", ' .
		   '"link": "' . $channel['link'] . '"}';

作成される文字列:
{"channel":
{"title": "title要素の内容", 
"date", "date要素の内容", 
"description": "description要素の内容",
 "link": "link要素の内容"
}
}
同様に item要素も展開し,items.countにitemの要素数を入れます.


3. 読み込んだRSSを表示する(Flash側)

2.で作成した文字列をLoadVars()のsendAndLoad()を使用して受け取ります.
受け取りの関数はonLoadではなく,onDataで受け取ります.
作成したJsonファイルをパースするのにJSON in ActionScriptというライブラリを使用します.このファイルはパブリッシュする際に.flaファイルと同じ階層でないとエラーになりますので注意してください. 注)パースしたデータの取得方法はJSON.asの仕様にしたがって取得してください.
  • Flashでのサンプルスクリプト

// 送信用LoadVarsインスタンス
var send_lv:LoadVars = new LoadVars();

// 受信用LoadVarsインスタンス
var recv_lv:LoadVars = new LoadVars();

// 受信が完了した際に呼び出されるイベントハンドラメソッド
recv_lv.onData = function(success)
{
	//ロードした後の処理
	if (success)
	{
		
		var o:Object = JSON.parse(success);
		
		trace("channel: " + o.channel.title);
		
		//以下取得をテキストボックスに表示するサンプル 始まり
		
		//channel要素
		channeltitle.text = o.channel.title;
		channellink.text = o.channel.link;
		channeldescription.text = o.channel.description;
		
		//items要素
		itemscount.text = o.items.count;
		
		//item[0]要素
		item0title.text = o.item[0].title;
		item0link.text = o.item[0].link;
		item0description.text = o.item[0].description;
		
		//以下取得をテキストボックスに表示するサンプル 終わり
		
	}
	else
	{
		trace("error");
	}
};

// 送信パラメータを送信用LoadVarsインスタンスのプロパティの設定
send_lv.url = "http://search.goo.ne.jp/rss/newkw.rdf"

// 送信実行 phpファイルの場所に適宜変更してください.
send_lv.sendAndLoad("test.php", recv_lv, "POST");


以下,各データ取得の例

channel要素

o.channel.title; // title要素
o.channel.link; // link要素
o.channel.description; //description要素

  • items要素

o.channel.count; //count要素

  • item要素

o.item[0].title; // title要素
o.item[0].link; // link要素
o.item[0].description; //description要素


注)o.itemで配列としてデータが取得できるので,取得したい希望の配列番号を指定して取得する.
o.item[0].titleの場合は配列の一番目のitem要素のタイトルを表示します.
o.item[1].titleの場合は配列の2番目のitem要素のタイトルを表示します.