重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

容量の大きいswfファイルを作る時、ムービー全体の容量を計算し表示させるプリローダ(Now Loading)をつける方法は知っているのですが、
loadMovie();を使って外部swf(jpg)を読み出す際、
それ(複数の場合はそれぞれ)にプリローダをつける方法がいまいちよくわかりません。ご存知の方いらっしゃいましたら、ぜひ教えていただけますでしょうか?

A 回答 (1件)

MX2004だとMovieClopLoaderクラスで比較的簡単に作成できますが、MXだとやや面倒です。

以下MXで使えるプリロード用関数を紹介します。
----
//引数:ロードファイルURL(String), ターゲットMC(絶対パス), ロード中処理関数名(String), ロード完了処理関数名(String)
function xLoadMovie(the_url, the_mc, xLoading, xComplete){
  //一意の名前をつけるためにgetTimer関数で、一意の数字を取得
  var theNum = getTimer();
  //ダウンロードの監視をするためのMovieClipを作成
  var lm_mc = _root.createEmptyMovieClip( theNum + "_mc", theNum);
  //loadMovie前のインスタンスのデータ容量を取得
  var mcTotalByteNum = the_mc.getBytesTotal();
  //ターゲットMCに指定ファイルをloadMovie
  the_mc.loadMovie(the_url);
  //スクリプトで作成したMCのonEnterFrameにダウンロード状況監視処理を設定
  lm_mc.onEnterFrame = function(){
    var totalByteNum = the_mc.getBytesTotal();
    var loadedByteNum = the_mc.getBytesLoaded();
    if ( mcTotalByteNum != totalByteNum && loadedByteNum >= totalByteNum ) {
      _root[xComplete]();
      //ダウンロードの監視用MCを消去
      this.removeMovieClip();
    }else{
      _root[xLoading]();
    }
  }
}
----

メインタイムラインに配置してあるMCインスタンスtarget_mcをターゲットに"test.jpg"をロードする場合を仮定します。ダウンロード中にはダイナミックテキストper_txtにダウンロードしたデータのパーセントを表示し、ロード完了後はOKと表示する、という者の場合、以下のような感じです。

----
//関数呼び出し
xLoadMovie("test.jpg",_root.target_mc, "xNowLoading", "xLoadComplete");

//ロード処理関数定義
xLoadComplete = function(){
  per_txt.text = "OK";
}

xNowLoading = function(){
  var totalByteNum = target_mc.getBytesTotal();
  var loadedByteNum = target_mc.getBytesLoaded();
  per_txt.text = Math.floor( loadedByteNum / totalByteNum * 100 ) + "%";
}
----

少々煩雑で難解かもしれませんが、ご参考になれば幸いです。
    • good
    • 0
この回答へのお礼

丁寧な回答、どうもありがとうございました。
諸事情により、Playerバージョン6対応にしなければならなかったので
困っていたところでした…

現在、参考にさせてもらい作成したスクリプトは問題なく稼動しています。
本当にありがとうございました。

お礼日時:2004/05/04 21:46

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