- ベストアンサー
FLASHとPHPを使って画像を表示させる方法について
- FLASHとPHPを利用した卒業研究で、PHPから値を取得し、画像を表示させたい。
- loadMovieを使用して画像を表示しようとしたが、エラーが発生。
- loadvarsを使用して値を受け取ることには成功しているが、画像の表示に問題がある。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
解決策など具体的にわかるはずはありませんよ。 回答者は超能力者ではないので,漠然とした質問をされても,明白な回答など書けません。 ご質問からわかることは, loadvars(LaodVars)が使えるFlashのバージョンで, PHPの示したファイル名のJPEGをFlash内に表示させたい。 と,たったこれだけのことです。 当然,質問以外のことを書かれてもかまいません。 また,背景の状況など関係ない話を書かれたとしても, 個人的にはそれを読むのも好きな方なので,個人的には問題はありませんが, 質問自体の内容説明にはなっていません。 loadvarsを使って値をとって来ることには成功している と書かれましてもどうやって成功したのかわからないため, 次にどうすればいいのかも提示できません。 また, エラーが出ると書かれましても, どんなエラーか書かれていらっしゃいませんから,何の判断材料にもなりません。 「エラーが出る」を書くこと自体無意味です。 何が原因で何がうまく行かないのかはさっぱりわかりませんから, 今現在がどうであれ, 漠然とした一般形で回答するような手段をとるしかありません。 LaodVars が使えるということは, FlashMX以上をご使用で, ActionScript1.0 または 2.0 だと思います。 ======================= 外部PHPのファイル名…「○○.php」 ○○.php に表示されるデータ内容…「●●=~.jpg」 --- ファイル構造 --- 任意のフォルダ ├ △△.html(▲▲.swfを表示) ├ ▲▲.swf ├ ○○.php └ ~.jpg ▲▲.swf(▲▲.fla)の _root のステージ上に, 「□□」というインスタンス名のムービークリップを配置。 ムービークリップ □□ が存在するフレームの 任意のレイヤーのキーフレームに書くスクリプトの形例 ------------------------------ @@ = new LoadVars(); @@.onLoad = function(☆☆) { if (☆☆) { □□.loadMovie(@@.●●); } else { trace("○○.php ロード失敗"); } }; @@.load("○○.php"); ------------------------------ (↑インデントに全角空白文字を使用しています。) (ActionScript 1.0) 動作条件 オーサリング:FlashMX以上 SWFパブリッシュ設定:FlashPlayer6以上 ASパブリッシュ設定:ActionScript1.0 または 2.0 ======================= うまく行かない原因になっているかもしれないと推測されることは大きく分けて3つあります。 1.ファイルパスに問題がある。 2.ターゲットパスに問題がある。 3.ちゃんとphpデータのロードが完了してから loadMovie() をしているかどうか。 1 の ファイルパス関連の話。 上に書いた ○○.php に表示されるデータ内容…「●●=~.jpg」 についてですが, この ~.jpg の JPEG のファイルパスは, PHPからのパスでも,SWFからのパスでもありません。 SWFを貼り付ける HTML から見たパスになります。 もし 任意のフォルダ ├ △△.html(▲▲.swfを表示) ├ ▲▲.swf └ ~.jpg こう↑であれば,「●●=~.jpg」 になります。 任意のフォルダ ├ △△.html(▲▲.swfを表示) └ $$(フォルダ) ├ ▲▲.swf └ ~.jpg こう↑であれば,「●●=$$/~.jpg」 になります。 2 の ターゲットパス関連の話。 ターゲットパスとはムービークリップやボタンなどのターゲットに対する住所指定部分です。 ファイルを呼びだすときに使うフォルダ階層指定のようなものです。 「ターゲットパス」 ただし, LoadVars自体はムービークリップではないので, @@.onLoad = function(☆☆) { }; の { } 内で LoadVars "以外のもの" に対して, this.○○ や _parent.○○ のような相対パスは使えません。 上で書いた □□.loadMovie(@@.●●); の □□ のように頭に this や _parent スを使わないターゲット指定にするか, もしくは, _root などから始まる絶対パスを使わなければなりません。 例: _root.□□.loadMovie(@@.●●); (こう使わなければならないと考えておいた方が良いという意味です。) そういう特殊な入れ物が LoadVars インスタンスです。 3 の ロードが完了関連の話。 phpデータのロード完了前に loadMovie しても, データがないので何もロードすることができません。 悪い例↓ @@ = new LoadVars(); @@.load("○○.php"); □□.loadMovie(@@.●●); ↓意味↓ @@というLoadVarsクラスのインスタンスを作成 @@に○○.phpをロードしろ □□に@@内●●の値のファイルをロードしろ 「○○.phpをロードしろ」 の後に 間髪入れず 「●●の値のファイルをロードしろ」 という命令をしても, この時点で, ○○.php は呼びだされただけで何もデータを用意してませんし送信もロードもしてませんから, @@内に「●●の値」など存在しません。 「●●の値」 は undefined になります。 以上, 漠然とした一般形での方法例と, そのとき注意すべき一般的事項でした。
お礼
注意事項等,細かい部分までのご指摘ありがとうございます。以後気をつけたいと思います(^^;) 実際BlurFiltan様のご回答を見てエラー処理をしてみたら、ファイルパスが間違っていたようで、結果うまく画像が表示されました。 任意のフォルダ ├ △△.html(▲▲.swfを表示) └ $$(フォルダ) ├ ▲▲.swf └ ~.jpg こう↑であれば,「●●=$$/~.jpg」 になります。 …というところで「●●=~.jpg」とプログラミングしていました。 BlurFiltan様のおかげで、卒業研究も進みそうです!! 短文で申し訳ありませんが、この度はありがとうございました。