- ベストアンサー
外部JPG読み込みでのLoading
- FLASH MXで外部JPGを読み込む際にloading画面を表示したいがうまくいかない
- 写真読み込みは完了しているがloadingの文字が写真の上にかぶさったままになっている
- 解決策を教えていただきたい
- みんなの回答 (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(); で書いてあるので必要ないとは思います。 でも気になるようでしたら // を取って注釈行ではなく,普通のスクリプトに変更してください。 こんなのでどうでしょうか。
その他の回答 (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; } }; -------------------------------------------
補足
ありがとうございます。 写真の上のLOADINGが消えました。 ちょっと重めのファイルで試したのですが、 LOADINGがでていないようですが、外部ファイルからの 読み込みのLOADINGはこの式はあってますでしょうか? 何度も質問して申し訳ありません。
お礼
ありがとうございます! おっしゃられるように変更したところ、 ちゃんとLoadingで待つようになりました! 台風大丈夫でしたでしょうか?大変なところご返事 頂きありがとうございます。感謝!