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

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

flashでjpg画像をloadmovieで読み込んでいるのですが。

flashでjpg画像をloadmovieで読み込んでいます。それで、pictという名前のフォルダに、1.jpg 2.jpg 3.jpg というように画像ファイルに名前をつけています。 actionscriptでフォルダの中の画像を loadmovie("./pict/" + i +".jpg"); i++; というようにして、5秒ごとに画像を入れ替えるようにしています。質問内容なのですが、画像がフォルダの中に入っている画像分終了したら、写真を入れ替えるloadmovieをとめたいのです。 現状では、もし画像が10枚だったら if(i >= 11){  this.stop(); } というようにif文使ってますが、ここの11と入れてるところを関数でひろいたいのです(フォルダに入っている画像の数を調べるスクリプトを教えていただきたいのです)。 そのような関数はございますでしょうか?もしくは同じようなことができる方法はありますでしょうか? winXP、flashMX2004proです。 よろしくお願いいたします。

  • muxic
  • お礼率37% (97/259)
  • Flash
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
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

  • loadMovieでjpg画像の読み込み

    こんにちは。 ムービークリップhyozi_mcに外部のjpg画像を読み込ませようとしています。 cauntaフォルダの中にあるb01.jpgとb02.jpgを読み込ませるためにタイムラインに hyozi_mc.loadMovie("caunta/b02.jpg"); hyozi2_mc.loadMovie("caunta/b01.jpg"); と記述しています。 プレビューをするとb01.jpgは読み込みますが、b02.jpgは読み込みません。何も表示されていません。 両方ともフォトショップが加工しました。 2つの画像の違いは保存する時にjpgの画質をb01は高にb02は中にしている位です。 フラッシュでloadMovieをしようと思えば画像の画質をある程度あげないといけないとか決まりみたいなのがあるのでしょうか? すみませんが教えて下さい。 よろしくおねがいます。 ソフトはFlashMXを使っています。

    • ベストアンサー
    • Flash
  • jpgを外部リンクさせswfで書き出し、loadmovieで読み込む

    こんにちは、よろしくお願いします。 WinXPでFlashMXを使用しています。 タイトルの通り、jpg画像を外部リンクさせたものをswfで書き出し、そのswfファイルをloadmovieで読み込みたいのですが、jpg画像が表示されません。 jpg画像以外のテキスト文字などは正常に表示されます。 jpg画像を外部リンクさせ、swfで書き出すところまでは正常に表示されるのですが、そのswfファイルをloadmovieで読み込ませると画像だけが表示されません。 お分かりになる方がいらっしゃいましたら、ぜひ御回答お願いします。

  • 外部から画像をサイズ指定で読み込む

    いつもお世話になっております。 FlashMX WinXPを使っています。 フォトギャラリーを作っています。 外部ファイルにサムネイル用の縮小画像「image_s.jpg(30×30)」 と拡大表示用の画像「image_l(300×300)」の2枚を用意して 表示させているのですが、 これを中間サイズの「image_m.jpg(150×150)」の画像1枚を用意し サイズを変更してどちらも表示させたいと考えています。 これは可能なのでしょうか? 現在は下記のActionScriptを使用し画像を表示させています。 this.space.loadMovie("image_s.jpg"); this.stop(); このActionScriptにどのようにサイズ指定すればよいのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Flash
  • Flash 8BasicでloadMovieを使う時

    Flash 8BasicでloadMovieを使う時に ボタンの中にムービークリップを配置して そのムービークリップをloadMovieで変更したいのですが、下記のようにしても出来ませんでした。これでは無理なのでしょうか? ボタンをimageB ムービークリップをimageM 同じフォルダーに読み込む画像image.jpg loadMovie("image.jpg", _root.imageB.imageM); 何かいい方法はないでしょうか? よろしくお願い致しますm(__)m

    • ベストアンサー
    • Flash
  • 画像が一瞬とぎれてしまいます。。。

    フラッシュで画像を切り替えるアルバムを作っていますが、どうしても画像が切り替わるときに一瞬つなぎ目できれてしまいます、きれつというか、点滅するような感じです。 m++; my_mcl.loadClip("./pict/"+m+".jpg", _root.photo_0_mc); myListener.onLoadProgress = function(photo_mc, loadedBytes, totalBytes) { progressmsg = loadedBytes+"/"+totalBytes; }; if (loadedBytes == totalBytes) { this.gotoAndPlay(2); } else { stop(); } このようなスクリプトを70フレームに書きまして、2フレーム目のところで_root.photo_0_mcに画像を読み込んでいます。そのときに一瞬とぎれてしまいます。同じ画像を読み込んでもなってしまいます。 ほかに方法などございましたらご教授いただけませんでしょうか、お願いいたします。 winXP、flashMX2004です。

    • ベストアンサー
    • Flash
  • loadMovieで読み込んだ画像のループについて

    以下のようなスクリプトで、シーン上に直接タイムラインを引いて 画像を読み込んでいます。 images.loadMovie("images/1.jpg"); これを1~5まで作り、ループ再生にしているのですが、 5から1に戻る際に、バチっと切れたようになってしまいます。 読み込みなおすために起こってしまう現象なのかしら・・・? と思うのですが、解決方法をご存知の方がいらっしゃいましたら、 どうぞご教示のほどよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • loadMovieしたムービークリップのボタン化

    ムービークリップにloadMovieで1.jpgをロードし、それをボタンにしたいのですが、下のスクリプトではうまく動作しません。 menu01_mc.loadMovie("1.jpg"); menu01_mc._xscale=10; menu01_mc._yscale=10; menu01_mc.onRelease = function(){ gotoAndStop(5); } 最初のloadMovieの部分をなくし、 menu01_mc.onRelease = function(){ gotoAndStop(5); } とするとちゃんと動作します。 loadMovieしたムービークリップはボタンにできないのでしょうか? FlashCS3、actionscript2.0で作成しています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • IEで「名前を付けて画像を保存」すると拡張子jpgがjpegになってしまう

    Windows 2000 SP4 で IE6.0 を使っています。 いつの頃からか、拡張子が .jpg になっているJPEG画像を「名前を付けて画像を保存」すると、拡張子が .jpeg になってしまうという現象が起きています。たとえば pict.jpg を保存しようとすると、ファイル名を指定するダイアログに表示される初期値は、下記のように pict.jpeg になってしまいます。 ファイル名:pict.jpeg ファイルの種類:JPEG(*.jpg) 画像のプロパティを見てもHTMLソースを見ても pict.jpg なのに、保存ダイアログには pict.jpeg という初期値がセットされます。 JPEGファイルを直接表示するリンク(URLの末尾が ~~/pict.jpg で終わる)を表示しても、「名前を付けて画像を保存」すると pict.jpeg が初期値になります。 JPEGファイルを直接表示するリンクを右クリックして、「対象をファイルに保存」しても、.jpeg になってしまいます。 ここで pict.jpg に直して保存すれば、.jpg で保存されるので致命的ではないのですが、数が多いときは面倒です。.jpg でないと扱えないソフトも有るので、とりあえず .jpeg のまま保存して、フリーウェアで拡張子を一気に .jpg に変更しています。 どうして .jpeg に変えられてしまうのでしょうか。

  • 外部画像jpg又はswfの表示について

    はじめまして、こんにちは。 Flash初心者です。 [使用環境] Flash MX 2004 Win 2000 [質問] 1フレーム目にはslide1.○○○、2フレーム目にはslide2.○○○、 3フレーム目にはslide3.○○○といったふうに画像をnextボタンと backボタンを使って切り替わるようなものを作っています。  ※○○○にはjpg又はswfが入ります。 +――――――――――――――――――+ | +―――――――+  +――――+ | | |           |  |back   | | | |           |  +――――+ | | | picture     |            | | |           |  +――――+ | | |           |  |next    | | | +―――――――+  +――――+ | +――――――――――――――――――+ ・外部画像を読み込んで表示するには「 picture.loadMovie("slide1.jpg"); 」又は、  「 picture.loadMovie("slide1.swf"); 」で表示できます。 ・slide1はjpgかswfのどちらかのファイルしかなく、shile2、slide3も同様です。 ・1フレーム目がswfの場合「 picture.loadMovie("slide1.swf"); 」、  2フレーム目がjpgの場合「 picture.loadMovie("slide2.jpg"); 」  というように拡張子を指定してスクリプトを書くのではなく、  条件式を使って画像を表示するにはどうすればよいのでしょうか。 ・もしくは、エラーを無視して次の行へいくというプログラムはあるのでしょうか。 どなたか分かるようでございましたらご教示下さい。お願いします。

    • ベストアンサー
    • Flash
  • Flash:外部JPEG読み込み待ちについて

    こんにちは。どうぞよろしくお願い致します。 Flash MX2004使用です。 外部JPEGを4枚読み込ませ、 4枚全部読み込み終わるまで再生をストップさせる またはローディング画面を表示する という事をやりたいのですが、なかなかうまくいきません。 現在の状況は、1フレーム目に this.ph01.loadMovie("01.jpg"); this.ph02.loadMovie("02.jpg"); this.ph03.loadMovie("03.jpg"); this.ph04.loadMovie("04.jpg"); 「ph01」に onClipEvent (load) { this._parent.stop(); } onClipEvent (data) { if (this.getBytesTotal()>0 && this.getBytesTotal()<=this.getBytesLoaded()) { if (this._parent.ph02.getBytesTotal()>0 && this._parent.ph02.getBytesTotal()<=this._parent.ph02.getBytesLoaded()) { if (this._parent.ph03.getBytesTotal()>0 && this._parent.ph03.getBytesTotal()<=this._parent.ph03.getBytesLoaded()) { if (this._parent.ph04.getBytesTotal()>0 && this._parent.ph04.getBytesTotal()<=this._parent.ph04.getBytesLoaded()) { this._parent.play(); } } } } else { this._parent.stop(); } } と書いています。 何分ActionScriptはまだまだサンプルの真似事とちょっと手を加える程度の知識しかないもので、上に書いた物もものすごい間違い方をしているかもしれません(恥) 読み込むJPEGファイルは大したサイズではないので、一般的な回線速度なら普通に再生しても読み込みが再生に追いつかないという事もないのですが、先方の指示で絶対に!!全ての画像を読み込み終わるまで再生しないように!!と言われています。 どなたか、どうかお力を貸して頂けないでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう