重要なお知らせ

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

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

var mcLoader:MovieClipLoader = new MovieClipLoader();
var listenerObject:Object = new Object();

listenerObject.onLoadStart = function(){
createEmptyMovieClipで空のMCを作成。
ライブラリ内にあるMC(文字が点滅するアニメーション。仮にtenmetsuとします。)を
attachMovieで割り当て、読み込み中だけ画面に表示させる。
}

listenerObject.onLoadInit = function() {
removeMovieClipで先程createEmptyMovieClipで作成したMCを削除。
よって文字点滅アニメーションが消える。
};

mcLoader.addListener(listenerObject);
mcLoader.loadClip("xyz.swf",yomikomi);
--------------------------------------------------------------
上記のようなスクリプトで、外部のxyz.swfをyomikomiインスタンスに読み込んでいます。
xyz.swfが100%完全に読み込まれた時にyomikomiに表示させたいのですが、
上記スクリプトでは8~9割程度読み込まれた時点で表示されているようです。(泣)
実行した結果xyz.swfの最初の方のフレームを再生している時もtenmetsuが表示されたままで、3秒位したら消えます。
このtenmetsuが消えた瞬間がまさにonLoadInitで、xyz.swfが100%完全に読み込まれた状態だと思うのですが・・・
xyz.swfが100%完全に読み込まれた時に初めてyomikomiに表示させるにはどうすればよいのでしょうか??
ご教授願います。m(_ _)m

A 回答 (1件)

ご質問で書かれていらっしゃる日本語を,


なぞるような感じでスクリプトを書くと次のようになります。


-----------------------------------------------
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listenerObject:Object = new Object();

// ロード開始時に実行
listenerObject.onLoadStart = function() {
// 仮に "kara" という空のムービークリップを作成
createEmptyMovieClip("kara", 0);
// kara に識別子 tenmetsu のムービークリップを attach
kara.attachMovie("tenmetsu", "tenmetsu_mc", 0);
// SWFをロードするムービークリップ yomikomi を停止
yomikomi.stop();
};

// ロード完了時に実行
listenerObject.onLoadComplete = function() {
// ムービークリップ "kara" を削除
kara.removeMovieClip();
// SWFをロードするムービークリップ yomikomi を再生
yomikomi.play();
};

mcLoader.addListener(listenerObject);
mcLoader.loadClip("xyz.swf", yomikomi);
-----------------------------------------------

上に書いたスクリプトの

  // SWFをロードするムービークリップ yomikomi を停止
  yomikomi.stop();

と,

  // SWFをロードするムービークリップ yomikomi を再生
  yomikomi.play();

の部分は,
それぞれ,

  // SWFをロードするムービークリップ yomikomi を非表示
  yomikomi._visible = false;

と,

  // SWFをロードするムービークリップ yomikomi を表示
  yomikomi._visible = true;

などに変える必要があるかもしれません(ないかもしれません)。
この辺は,ロードされる「xyz.swf」のタイムラインの状況などによって変わります。

何にしても,
SWFは何も指示しないとローカルPCにロードされる端から再生されます。
だから重いSWFであっても,
電話回線であっても,ほぼ瞬時に最初のフレームだけくらいは何のストレスもなく表示されるのです。
昔はこれをストリーミング再生と言いましたが,
ストリーミング送信や配信と紛らわしいので,
最近ではプログレッシブ再生と言われることが多いです。
これは,
SWF 単独再生であっても, SWF に SWF を読み込むときであっても変わりません。
ロード完了まで再生させたくないのでしたら,
ロード完了までストップさせておくべきでしょう。
単純に言えばそれだけのことです。
(複雑に言えば...,難しいので説明しがたいです。)
 
    • good
    • 0
この回答へのお礼

BlurFiltanさん。ご回答ありがとうございます。
この回答を拝見する前にyomikomi._visible = false;
を思いついてやってみたところ思い通りに動作しましたので
とりあえず解決しました。

思いついたスクリプトが、この回答に書かれてある内容と
基本的に同じだったので安心しました。

お礼日時:2008/11/14 20:58

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