dポイントプレゼントキャンペーン実施中!

こんにちは。
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の文字が写真の上にかぶさったままになります。
どのようにすればよろしいでしょうか?お教えいただければ
幸いです。

A 回答 (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(); で書いてあるので必要ないとは思います。
でも気になるようでしたら // を取って注釈行ではなく,普通のスクリプトに変更してください。

こんなのでどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます!
おっしゃられるように変更したところ、
ちゃんとLoadingで待つようになりました!

台風大丈夫でしたでしょうか?大変なところご返事
頂きありがとうございます。感謝!

お礼日時:2005/09/07 13:26

>> 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/FN030 …

この回答への補足

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

補足日時:2005/09/06 07:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!