• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:flashでjpg画像をloadmovieで読み込んでいるのですが。)

Flashでjpg画像をloadmovieで読み込む方法とフォルダ内の画像数を調べるスクリプトについて

このQ&Aのポイント
  • Flashでjpg画像をloadmovieで読み込む方法と画像を入れ替えるloadmovieを停止する方法について教えてください。
  • 現在、pictという名前のフォルダに1.jpg、2.jpg、3.jpgという名前の画像ファイルが入っています。これらの画像をloadmovieを使って読み込み、5秒ごとに画像を入れ替えるようにしています。しかし、フォルダ内の画像がすべて表示された後にloadmovieを停止したいです。
  • 現在、画像の数をif文で判定してloadmovieを停止していますが、関数を使用してフォルダ内の画像数を調べる方法が知りたいです。または、同じ目的を達成するための別の方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 >> myListener.onLoadError = function() { >> _root.gotoAndStop(36); >> }; >> で、フォルダの中の画像がなくなったら、 >> 36フレーム目には飛んでいるようなんです、 >> traceを36に書くと表示されるので。 >> なぜtheEndが表示でないんでしょう? まず訂正です。すみません。 書いていることと,スクリプトが一致してませんね。 質問者さまが気づかれた通り, >> _root.gotoAndStop(36); ですね。 先にスクリプトを作って,ココにコピペして,あとで説明を書いた物で,頭の中でかってにフレーム数が変わっていました。 -------------------------------- 36フレーム目には飛んでいるようだけれども,表示されないというのは,スクリプトとは関係がないと思います。 考えられる原因は2つです。 1つめは,フレーム36 にも _root.myMC があるのではないでしょうか? 1.jpg,2.jpg,3.jpg… と読み込まれたあと,もし 5.jpg が無かった場合,ロード失敗でフレーム36に飛びますが,このとき失敗しているので,4.jpg の消えた残骸というか跡形は白で残ります。 その白の下に theEnd が書いてあったら,表示されていても見えません。 _root.myMC は フレーム35 まで存在させていてもかまいませんが,フレーム36 では消してください。 2つめは,ほとんど可能性がないことですが, theEnd が書いてあるフレームが読み込まれる前に theEnd まで飛ばしたので,ムービーが停止してしまったということです。 でも2つ目は考えられませんね。 少なくとも 1.jpg があれば 3秒間くらいは時間稼ぎできていますから,その間に theEnd フレームまで読み込まれていますよね。 ハッキリした原因はわかりませんが,1つめに書いたのが原因ではないでしょうか? それ以外だとわかりません。 #1で書いた物も, 説明と,スクリプトが一致していませんが,実際に作ってみたものを,説明してスクリプトもコピペしたものです。 最終フレームの The End も表示されました。

muxic
質問者

お礼

できたのですが、今回指摘されたこと 36フレームに_root.myMCがあるなど はなく、正直原因わかりませんでした。 flashmx2004を入れなおして少し直したらなぜか直ったんです。もう原因わかりません。 試しに、1フレームに var i = 0; 2フレーム目に trace(i); として、NaNがかえってくることなんてありえます?! ひとまず思ったとおりにはできましたのでとても感謝しております。いつもたすけていただいているような、sassakunさんには。。。多謝。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

対象を FlashPlayer7 以上に限定するならば, loadMovie ではなく,MovieClipLoaderを使えばファイルのあるなし判定ができます。 ムービー全体がどうなっているのかわかりませんが,  this.stop(); と書かれているところから考えて,タイムラインでスクリプトを書かれているのかなと推測しましたので, 勝手なサンプルとして回答すると, 36フレームのムービーを作成し。 フレーム1~35のステージ上には,「myMC」というインスタンス名のムービークリップを配置。 フレーム36は The End みたいな文字を書いたフレームを用意し, ---フレーム1のタイムラインのスクリプト-------- // MovieClipLoaderインスタンスの生成 var my_mcl = new MovieClipLoader(); // リスナーオブジェクト生成 myListener = new Object(); // ロードできなかったときの処理 myListener.onLoadError = function() { _root.gotoAndStop(31); }; // イベントリスナーの登録 my_mcl.addListener(myListener); //変数 i の初期値を設定 var i = 0; -------------------------------------- ---フレーム2のタイムラインのスクリプト-------- i++; my_mcl.loadClip("./pict/"+i+".jpg", _root.myMC); -------------------------------------- ---フレーム35のタイムラインのスクリプト-------- gotoAndPlay(2); -------------------------------------- ---フレーム36のタイムラインのスクリプト-------- stop(); -------------------------------------- とすると, pictフォルダ内に,例えば 5.jpg がなかったとすると, そこで The End フレームに飛びます。 詳しくは,ヘルプのActionScriptリファレンスで,「MovieClipLoader」を検索してみてください。 ネット上では下記URLが参考になると思います。 「MovieClipLoaderクラスについて」

参考URL:
http://www.fumiononaka.com/TechNotes/Flash/FN0501003.html
muxic
質問者

補足

ありがとうございます。 大体うまくいったのですが、最後、36フレーム目のところにとんだあと、36フレーム目のオブジェクトが表示されません。 myListener.onLoadError = function() { _root.gotoAndStop(36); }; で、フォルダの中の画像がなくなったら、36フレーム目には飛んでいるようなんです、traceを36に書くと表示されるので。なぜtheEndが表示でないんでしょう?

関連するQ&A

専門家に質問してみよう