久しぶりにお仕事関連のメモです。
FlashでRSSを表示させる基本?メモ
HTMLというか、普通にPHPでRSSを表示させるには、
Magpieっていうのを使えばすんなり出来るんですが(日付の変換がちょっと厄介ですが)、
Flash上で表示させるのはやったこと無くて、今度仕事でやるみたいなので予習してみた。
基本的にFlashでは別ドメインにアクセス出来ないので、間にPHPをかます。
PHPでRSSを読みに行ってもらい、その読み込んだファイルをFlashに渡すという流れ。
今回はこのブログのRSS情報の最新エントリーのタイトル、日付、そしてタイトルにそのエントリーへのリンクをFlash上で表示させるようにしてみる。
まずFlashでは下図のように作ってみる

■1フレーム目のフレームスクリプト
myxml = new XML();
myxml.onLoad = LoadXML;
// PHP
myxml.load("readrss.php");
//
myxml.ignoreWhite = true;
function LoadXML(success) {
if (success == true) {
_root.blogtitle.text = myxml.firstChild.childNodes[0].childNodes[8].childNodes[0].firstChild.nodeValue;
_root.blogurl.text = myxml.firstChild.childNodes[0].childNodes[8].childNodes[2].firstChild.nodeValue;
_root.blogtitle.htmlText = "<a href='"+_root.blogurl.text+"'>"+_root.blogtitle.text+"</a>";
_root.blogdate.text = myxml.firstChild.childNodes[0].childNodes[8].childNodes[5].firstChild.nodeValue;
_root.blogdate.text = pubDateToDate(_root.blogdate.text);
}
}
this.stop();
※ダイナミックテキストの変数を設定せずに、インスタンス名を設定。
※例えば、ブログタイトルであれば…_root.blogtitle.textで表示されるが、リンクを設定したいのでブログタイトルは、_root.blogtitle.htmlTextにし直す。
※pubDateToDate(_root.blogdate.text);というのはエントリー日付の表示を変える関数で、今回そのAction Scriptは省いてます。
あとはPHPファイル(readrss.php)ですが、これはシンプルに
<?php
readfile("http://www.k1factory.biz/blog/index.xml");
?>
これだけです。
これで試しにアップしたのが、こちら
コメント (2)
こんにちは!
PHP・ActionScriptを勉強中のものです。
すごくシンプルなものだったので出来そう!だと思い挑戦したのですが、なかなかうまくいきません。
undefinedと表示されてしまいます。
ローカルもアップ後もです、、、
何が原因でしょうか。もしこのコメントに気づいてくださってお時間がありましたら是非教えてください。
読み込むブログはWordPressでRSSが「.xml」ではなく「?feed=rss」のような形です。
Posted by: mar | 2009年06月20日 11:55
日時: : 2009年06月20日 11:55
marさん、こんにちは。
今、コメントに気づきました。すいません。
コメントありがとうございます。
undefined(定義されてません)ってよく出ますよね。
僕も最初はそうでした。
PHPでRSSファイルを読み込み、Flashに渡すところまでは出来てますか?
出来てるのであれば、FlashがRSSファイルのツリー構造に沿ってちゃんと読み込んでるかどうかでしょうか。
結構ややこしいですからね。
原始的かもしれませんが、僕の場合、
まずは、
myxml.firstChild.childNodes[0];
だけ表示させて様子をみて、それで表示されれば、
さらに
myxml.firstChild.childNodes[0].childNodes[8];
クリアなら
myxml.firstChild.childNodes[0].childNodes[8].childNodes[0];
…
と行った具合に手探りで検証しながら作りました。
ご参考になれば、幸いです。
Posted by: kuro | 2009年06月24日 20:42
日時: : 2009年06月24日 20:42