Flashにタイトルを表示

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
tetsu
記事: 3
登録日時: 2007年5月09日(水) 16:07

Flashにタイトルを表示

投稿記事 by tetsu » 2007年5月09日(水) 16:24

お世話になります。
CMS Designerで更新できる新着情報のページ(タイトルと本文が羅列した単純なもの)のタイトル部分(新規投稿3件分について)を、別ページにあるFlashで表示させたいのですが、どのようにすれば良いでしょうか。
リファレンスマニュアルの「6.3.9 XML形式での出力(FlashやAjaxとの連携)」を見たのですが、わかりません。
PHP、XMLについてはかなり初心者です。
基本的な質問かもしれませんが、よろしくお願いします。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2007年5月09日(水) 17:58

XMLをFlash(AS)で取得できるのなら、

コード: 全て選択

<?php require_once("略"); ?>
<cmsd:entrylist name="xxx" output="xml" rows="3" />
<?php cmsd_end_template(); ?>
と書いたphpファイルをFlashで読み込めば動きそうです。
これは生のXMLを出力するcmsdの命令です。

見た目が気になるなら

コード: 全て選択

<?php header('Content-type: application/xml .xml'); ?>
でXMLツリーが見れます。まぁソース見ればすむことですが、、、。

tetsu
記事: 3
登録日時: 2007年5月09日(水) 16:07

投稿記事 by tetsu » 2007年5月10日(木) 12:02

ブラウザからphpにアクセスするとXMLが見えましたが、
このphpをFlashに読み込むとXMLと認識しているのでしょうか?
ノード値を取り出そうとすると無理でした。
Flashからxmlに直接アクセスしてデータを利用するというのは、書籍等であるのですが、phpで出力したxmlを利用するみたいなのは見つかりませんでした。
試行錯誤して、

コード: 全て選択

System.useCodepage = true;
myLV = new LoadVars();
myLV.ignoreWhite = true;
myLV.load("test.php");
myLV.onLoad = function() {
	myLV = unescape(myLV);
	myXML = new XML(myLV);
	t1 = myXML.firstChild.firstChild.nodeValue;
};
です。たぶん無茶苦茶です。
エントリーのタイトルを取り出すだけなので、簡単なことのような気がするのですが。すいません、Flashの質問になりました。[/code]

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2007年5月10日(木) 16:55

これで取得できてるか確認して、trace出来てなければ.phpは嫌なんだろうね。

コード: 全て選択

myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = phpXML;
myXML.load("test.php");
function phpXML()
{
    trace(myXML);
}
これ入れてもやっぱ拡張子がphpだと動かないかな。

コード: 全て選択

<?php header('Content-type: application/xml .xml'); ?>

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年5月11日(金) 08:22

 tetsuさん、ご質問ありがとうございます。

 弊社では、Flash8の環境において、ASから.phpが出力するXMLデータを
取得するサンプルを書いて動作させております。

 myLV.onLoadに指定したfunctionの中で、デバッグ用のメッセージ出力などを
行い、コンソール出力を確認してみると、どうでしょうか。
 onLoadが呼び出されていれば、XMLとして認識できているということかと
思います。Flash ASについてはそれほど詳しくない為、間違っているかもしれま
せんがご容赦下さい。m(__)m

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年5月11日(金) 11:34

 追記です。弊社作成のASサンプルを確認したところ、tsuさん作成のものとほぼ同じ
方法でした。弊社ではheaderの指定は行わなくても問題ありませんでしたが、サーバ
環境によっては問題のあるケースもあるのかもしれません。

 また結果をご連絡頂ければ幸いです。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年5月11日(金) 11:41

 もう一つ追記です。

 Flash8の場合、読み込めるXMLデータは、そのFlashが置かれているサーバと
同一サーバのXMLデータのみとなっています。
 ひょっとすると、Flashを置いてテストしているサーバと、CMSDが稼動して
いるサーバが別ということはありませんでしょうか?
 (ローカルPC上でFlashを実行している場合は問題ありません)

 これをクロスドメイン通信の制限といいますが、これを解除する為には、XML
データが置いてあるサーバのルートフォルダに、crossdomain.xmlという
ファイルを置く必要があります(ルートでなくても良い方法もあります)。

 crossdomain.xmlには、例えば次のように記述します。

コード: 全て選択

<cross-domain-policy>
	<allow-access-from domain="*" />
</cross-domain-policy>
 この記述ですと、全てのサーバ上のFlashから、そのサーバ上のデータへの
アクセスを許可する事になります。
 詳しくはcrossdomain.xmlなどのキーワードでgoogle検索などしてみて
下さい。

tetsu
記事: 3
登録日時: 2007年5月09日(水) 16:07

投稿記事 by tetsu » 2007年5月11日(金) 11:41

tsuさま webmasterさま

お世話になります。ご返信ありがとうございました。
tsuさまの指示どおりASを書き、

コード: 全て選択

function phpXML() {
	t1 = myXML.firstChild.firstChild.firstChild.firstChild.nodeValue;
}
を追加したら、任意のタイトルを表示できるようになりました。
XMLとして認識していると思います。ありがとうございました。

なお、tsuさまのもう一つの指示

コード: 全て選択

<?php header('Content-type: application/xml .xml'); ?>
についてですが、すいません。
phpは本当に素人ですので、どこにどういうふうに書けばいいかわかりませんでした。勉強を重ねたいと思います。今後ともよろしくお願いします。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2007年5月11日(金) 16:49

あ、解決されたようでよかったです。

phpについては要はこういうことです。

コード: 全て選択

<?php header('Content-type: application/xml .xml'); ?>
<?php require_once("略"); ?>
<cmsd:entrylist name="xxx" output="xml" rows="3" />
<?php cmsd_end_template(); ?>
これでただ、この.phpはxmlだよーと宣言してるだけです。
なのでアクセスすると、普通のxmlファイルと同様に見えるってだけなので、うまくいくなら気にしなくても問題ないですよ。

FlashとCMSDの連携は面白そう。
でも何となくなASは書けてもイマイチFlashの使い方がわからなくて何も出来ません、、、。羨ましい限りです。

返信