外部JPG読み込みでのLoading

このQ&Aのポイント
  • FLASH MXで外部JPGを読み込む際にloading画面を表示したいがうまくいかない
  • 写真読み込みは完了しているがloadingの文字が写真の上にかぶさったままになっている
  • 解決策を教えていただきたい
回答を見る
  • ベストアンサー

外部JPG読み込みでのLoading

こんにちは。 FLASH MXでものすごく単純なことをしようとしているのですが、 出来ずに困っております。 外部JPGを読み込むときにloading画面を表示したいのですが、 それが出来ずに困っております。 レイヤーが下記の様に3つあります。 script loading(loadingの文字)1フレーム目に文字、2フレーム目は空 base(読み込み用のMC) scriptの1フレーム目に下記のスクリプトを書いております。 --------------------------------------------------------- base.loadMovie("thumb/"+_name+".jpg"); if(this.getBytesTotal() < this.getBytesLoaded()){ this.gotoAndstop(2); }else{ this.stop(); } ---------------------------------------------------------- これでプレビューすると写真読み込みは完了しているのですが、 loadingの文字が写真の上にかぶさったままになります。 どのようにすればよろしいでしょうか?お教えいただければ 幸いです。

  • Flash
  • 回答数2
  • ありがとう数1

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

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

#1です。 ご指摘ありがとうございました。 いやはや外部ファイルのロード画面は難しいです。 #1のスクリプトをちょろっと検証してみて,「読み込み中」が見えたので,これで行けると思ったら大間違いでした。どうもすみませんでした。 また,西日本に住んでおりまして,台風14号とやらで停電はするし,近くには避難勧告はでるし,などでPCどころじゃない状況でしたので,返事が遅れましたこともお詫びします。 おおむね,#1で書きました参考URLのようにしないと,MovieClip.lloadMovie() ではうまく行かないようです。 でもいろいろ実験してみて,参考URLも違っていることもわかってきました。 結論から先に書きます。 スクリプトを書かれた,フレーム1のフレームのスクリプトは ----------------------------------- base.loadMovie("thumb/"+_name+".jpg"); ----------------------------------- と書くだけにしてください。 そして,インスタンス名baseのムービークリップ自体には以下のように書いてください。 ----------------------------------- onClipEvent (load) { _parent.stop(); } onClipEvent (data) { if (this.getBytesTotal()>0 && this.getBytesTotal()<=this.getBytesLoaded()) { _parent.gotoAndStop(2); // } else { // _parent.stop(); } } ----------------------------------- スクリプトは以上です。 onClipEvent (load) { _parent.stop(); } で,やはりまず_parent(親ムービー)を1フレームで止めなければなりません。 ここが参考URLでは抜けています。 止めておいて, onClipEvent (data) 以降を計算させます。 onClipEvent (data) の2行目 this.getBytesTotal()>0 && と書いてありますが,これがなくてもちゃんと動作するようです。 this.getBytesTotal() == this.getBytesLoaded() == 0 という両方 0 の場合もありうるので保険のようなものでしょう。 また,// の付いた部分ですが, // } else { // _parent.stop(); これは,最初に _parent.stop(); で書いてあるので必要ないとは思います。 でも気になるようでしたら // を取って注釈行ではなく,普通のスクリプトに変更してください。 こんなのでどうでしょうか。

ken1low
質問者

お礼

ありがとうございます! おっしゃられるように変更したところ、 ちゃんとLoadingで待つようになりました! 台風大丈夫でしたでしょうか?大変なところご返事 頂きありがとうございます。感謝!

その他の回答 (1)

noname#35109
noname#35109
回答No.1

>> loading(loadingの文字)1フレーム目に文字、2フレーム目は空 なわけですから, >> this.gotoAndstop(2); で2フレームに飛んでいないということです。 省略されているのかどうかわかりませんが,書かれているスクリプトでは,1回しか計算されませんよ。 onClipEvent (enterFrame)  か参考URLのように onClipEvent (data) で何度も計算させないといけません。 それと,スクリプトの2行目が, if(this.getBytesTotal() < this.getBytesLoaded()){               ↓ if(this.getBytesTotal() <= this.getBytesLoaded()){ でしょう。 this.getBytesTotal() < this.getBytesLoaded() なんて理論上ありえませんよね。ひょっとしたら誤差などの計算違いでそうなることもあるかもしれませんが。 以上の点を修正して,あと細かな部分に手を加えると以下のようになります。 ------------------------------------------ this.stop(); base.loadMovie("thumb/"+_name+".jpg"); this.onEnterFrame = function() { if (base.getBytesTotal()<=base.getBytesLoaded()) { this.gotoAndstop(2); this.onEnterFrame = null; } }; -------------------------------------------

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

補足

ありがとうございます。 写真の上のLOADINGが消えました。 ちょっと重めのファイルで試したのですが、 LOADINGがでていないようですが、外部ファイルからの 読み込みのLOADINGはこの式はあってますでしょうか? 何度も質問して申し訳ありません。

関連するQ&A

  • 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
  • Now Loadingから次のフレームに行かない

    Flash8です。 1フレームに全体のサイズを読み込むスクリプト ------------------------- this.onEnterFrame = function() { nParcent = (_root.getBytesLoaded()/_root.getBytesTotal())*100; if (nParcent == 100) { _root.play(); delete this.onEnterFrame; } }; _root.stop(); ------------------------- と、%を数字で表記するためのスクリプト ------------------------- onClipEvent (enterFrame) { num = Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100); _root.nowloading.percent = num+"%"; } ------------------------- を入れていて、100%読み込んだら次のフレームより開始(再生)したいのですけど、 現状読み込んで(数字も0から100に上がって行って)、100%になった状態でストップして再生しません。 何が足りないのでしょうか? アドバイスお願いします!

  • (1)loading後再生→(2)すぐにアクセスした場合飛ばす

    現状できてることは (1)トップページにてLoading後(一分くらい)→再生→最後のフレームではストップ (2)そしてサブからトップへすぐに戻ったとき→Loading(一分)後、再生せず→最後のフレームでストップということまではできてます。 問題は(2)の"またLoading(一分)後”なのです。 サブからすぐにトップへ戻ったときは再生せずに 最後のフレームへジャンプしてくれるのはいいのですがその前にLoadingが発生して一分たってから最後の フレームへジャンプするのです。このときのloading の防ぎ方を教えてください。 現状スクリプトを下にて参考にしてください。 Flash MX6 フレーム数940 フレーム1 onClipEvent (load) { _root.stop(); //タイムラインの1フレーム目で止めておく } onClipEvent (enterFrame) { // すべて読み込んだら3フレーム目へ if (100 == Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)) { _root.gotoAndPlay(3); } } フレーム 2 gotoAndStop (1); ---------------↑ここまではLoading--------------- フレーム4 onClipEvent (load) { myObject = SharedObject.getLocal("Watch"); myDate = new Date(); Watch2 = myDate.getTime(); if (myObject.data.Watch1 != undefined) { Watch1 = myObject.data.Watch1; } else { Watch1 = 0; } //ココは60000で一分 if (Watch1+60000>Watch2) { //ここを最終フレーム _root.gotoAndStop(920); } } onClipEvent (enterFrame) { myDate = new Date(); Watch3 = myDate.getTime(); myObject.data.Watch1 = Watch3; } ----------↑一分内は940へジャンプ(前回sassakunさんにてご回答)-------------- フレーム4をフレーム1へ先にもってきたり 色々ためしましたがうまくいきませんよろしくおねがいします。

    • ベストアンサー
    • Flash
  • アルファをかけた外部画像の読み込みについて

    初心者ですが、flash8にてフルフラッシュのサイトを作っています。 base.swfというファイルに、各ページへ遷移するボタンを配置し、それをクリックするとbase.swfに配置したムービークリップ(back_image)に他のswfが読み込まれるようになっています。なお、base.swfをひらくとtop.swf(トップページ)が自動的に読み込まれるようにしてあります。 top.swfに外部画像を読み込み、アルファをかけてフェードイン→フェードアウトするように表示させているのですが、フェードイン→フェードアウトの途中でtopページ以外のボタンを押すと、強制的にback_imgにtop.swfが何度も読み込まれて、その後の操作が何もできなくなってしまいます。 フェードイン→フェードアウトが終わった後なら何も問題はありません。 アルファをかけたフェードインについてはこちらのページhttp://okwave.jp/qa1915003.htmlを参考にさせていただきました。ここに書かれている両方のやり方を試してみたのですが、結果は同じでした。 自分なりにスクリプトを変えた部分もあるので、それが間違っているのでしょうか。 それともタイミング的に無理なものなのでしょうか。 top.swfのスクリプトを記載しておきます。 ●2フレーム目に back_image.loadMovie( "img1.jpg" ); this.stop(); ●back_imageに(もともとback_imageのアルファは1%にしてあります。) onClipEvent (data) { total = this.getBytesTotal(); loaded = this.getBytesLoaded(); //読み込み完了後、フェードイン開始 if (loaded>=total) { //フェードスピードを設定 this.fed_spd = 2; //フェード処理を定義 this.onEnterFrame = function() { //フェードの処理 this._alpha += fed_spd; //アルファが100%になったらフェードアウト if (this._alpha>100 || this._alpha<0) { fed_spd = -fed_spd; } //アルファが0%になったら終了 else if (this._alpha <= 0) { this._alpha = 0; delete this.onEnterFrame; //top.swfのメインのタイムラインを動かす _parent.play(); } }; } } 仮に、一度トップページを見た人はそれ以降はスルーしてしまうと思うので、このままだとサイトとして成り立たなくなってしまいます。 どうしたらよいか悩んでいます。 わかりにくい質問で申し訳ありませんが、お力を貸していただけますでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部JPGのキャッシュ削除と、読み込み待ち。

    いつも大変お世話になってます。 画像を差し替えるだけで更新可能なFlashを作りたいのですが、今、外部から画像を計10枚呼び出すところまで出来てます。 出来たFlashをサーバーにUPして、画像を差し替えたところ、キャッシュが残ってしまっているようで、ブラウザからキャッシュを削除しないと画像が変更されません。 【1フレーム目】 this.a1.loadMovie("a/p.jpg"); 【8フレーム目】 this.a2.loadMovie("a/t.jpg"); ・ ・ ・ 【700フレーム目】 this.i1.loadMovie("i/last.jpg"); と言うように順番に読み込んでます。 700フレームまで読み込んだら、700フレーム目を再生したままの状態で1フレーム目からの画像をリロードして、更に1フレーム目に戻ったら700目の画像をリロードするという方法はないでしょうか? どなたか、ご存知でしたら、是非教えてください。 よろしくお願いいたします。

  • 外部jpg画像のフェード

    外部からjpgファイルの呼び出し自体ができません。 初心者ですみません。 環境はFlashCS3(loadMovieはサポートされていないようです) XPです。 ↓やってみた方法です。 まず例えば250*250で作るとして、 ドキュメントを250*250にします。 その後、新規シンボルで四角いシェイプを250*250で作り、レイヤー1の1フレーム目に配置しました。 レイヤー2を作り、そこにASを記入…ASは上記の通りloadMovieが使用できないので何を書いていいやらで…。 画像数は3枚です。 どうぞ宜しくお願い致します!

  • 読み込まれた外部ムービーからのコントロールについて

    下記のファイルなど(※)を用意します。 (?)の部分にどのような記述をすれば、(?)のボタンアクションによってyomikomu.exeのシーン2フレーム1を表示させられますか。 使用ソフトは、FLASHMXです。よろしくお願いします。 ※ My Documentsフォルダ  yomikomu.exe   シーン1    レイヤー2 フレーム1・15 インスタンス名:yomikomareru    レイヤー1 フレーム15 フレームアクションgotoAndStop("シーン 1", 10)    レイヤー1 フレーム6 フレームアクション_root.yomikomareru.gotoAndPlay(6)    レイヤー1 フレーム1 フレームアクションloadMovie("/gaibu/yomikomareru.swf", "yomikomareru")   シーン2    レイヤー3 フレーム1・15    レイヤー2 フレーム1・15 インスタンス名:yomikomareru    レイヤー1 フレーム15 フレームアクションgotoAndStop("シーン 2", 12)    レイヤー1 フレーム11 フレームアクション_root.yomikomareru.gotoAndPlay(11)    レイヤー1 フレーム1 フレームアクションloadMovie("/gaibu/yomikomareru.swf", "yomikomareru")  gaibuフォルダ   yomikomareru.swf    シーン1     レイヤー2 フレーム11・15     レイヤー2 フレーム6・10 ボタンアクション(?)     レイヤー2 フレーム1・5     レイヤー1 フレーム15 フレームアクションgotoAndPlay("シーン 1", 11)     レイヤー1 フレーム10 フレームアクションgotoAndPlay("シーン 1", 6)     レイヤー1 フレーム5 フレームアクションgotoAndPlay("シーン 1", 1)     レイヤー1 フレーム1

    • ベストアンサー
    • Flash
  • 空のMCにLoadした外部画像jpgの名前設定

    いつもお世話になっております。 空のMCを作成し、Photogallery内に使用するJPGイメージを外部から呼び出すようにしているのですが、イメージ自体をマウスでドラッグしたいので各JPGイメージに名前(インスタンス名)を付けたいのですが、うまくいきません。 是非ご教授頂けますと幸いです。 XP、CS4 アクションスクリプト2.0 環境です 現在のスクリプトです。 loadMovie(".../images/image1.jpg", "targetlargeMC"); var targetlargeMC; targetlargeMC = ".../images/image1.jpg"; ドラッグするためのコードは下記です(一応) targetlargeMC.onRollOver = function () { Mouse.hide(); handMC.gotoAndStop("hand"); //startDrag("handMC", true); } handMC.onLoad = function () { gotoAndStop("none"); } var drag_flg:Boolean = false; targetlargeMC.onPress = function() { startDrag(this); this.onMouseMove = function() { drag_flg = true; delete this.onMouseMove; }; }; targetlargeMC.onRelease = targetlargeMC.onReleaseOutside = function () { if (!drag_flg) { gotoAndStop(60); } else { stopDrag(); drag_flg = false; } };

    • ベストアンサー
    • Flash
  • 外部画像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
  • 外部の画像、もしくはswfを読み込んでボタンをつくりたい

    以下2パターンを試してみました。 1 ボタンシンボルが配置してあるswfファイルを作成(0.swf)し、「sum」というMCに読み込み loadMovie("0.swf","sum"); 結果は、通常状態の表示は問題なく行いましたが、マウスをボタンの上にもってきても反応しませんでした。 (カーソルは変更されるが画像に変化なし) 2 MCをつくり、そこに on (rollOver) { this.gotoAndStop("2"); } on (rollOut) { this.gotoAndStop("1"); } 下の階層に、1フレーム目および2フレーム目に通常状態とrollOverの画像を読み込むためのMCを配置。それぞれsum_1、sum_2。 そのMCがあるタイムライン上に loadMovie("0.jpg","sum.sum_1"); loadMovie("0_on.jpg","sum.sum_2"); 要するに箱を作って、画像だけ差し替えられるようにした感じです。 実行すると、1フレーム目は正常に表示されますが、マウスをかざした時に白くなってしまい、マウスを戻しても白いままで最初の画像が戻りません。 loadMovieはこういう動きなのでしょうか。 外部から読み込んでボタンとして動作させたい場合はどのようにすればいいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう