ロードされる側で NowLoading するときの課題

ロードする側とロードされる側は、なるべく相互干渉しないように作りたい。しかし、そこには見えない大きな壁があったのです。ううう。

MovieClip.loadMovie() や MovieClipLoader.loadClip() を使用して、外部 swf を呼び出す場合、ロードごとに NowLoading (ローディングバー等)を出したいということがあるじゃないですか。その場合、呼び出される側に NowLoading が設置して、二者を分離する方が良いと思うのです。オブジェクト指向的にも。

しかし、実際思ったように動いてくれない。ローディングバーが表示されるときには、すでに外部 swf が読み込み終わっていたりして。何だかなあ。

原因は、リンケージの「最初のフレームに書き出し」にある。

MovieClip や Sound を最初のフレームに書き出した場合、1フレーム目が読み込まれる前に、それらが読み込まれる。つまり、NowLoading を1フレーム目に置いたところで、それが発動する前に読み込みが行われるのだ。

これが理由になって、外部 swf としてロードされた際、NowLoading までに空白のタメの時間ができてしまう。おふっ。

実際、MovieClipLoader の onLoadProgress イベントで、外部 swf のロード進捗状況を見ていると、NowLoading の表示前からロードは行われているのがわかる。

ということで、ロードされる側の swf では MovieClip の「最初のフレームに書き出し」はせず、2フレームのステージ外あたりで一度 embed させるのが良い。これで問題は軽減されるはず。

でも、mp3 とかの音は、embed だと音が暴発してよろしくない。悩ましい。音は音で、また別途ロードしてあげるように作るのが正しいのかも。ローディング祭か。ううう。

…ここまで書いておいて何だけれども、MovieClipLoader の恩恵に授かるなら、ロードする側が NowLoading 処理を負わないといけない。ぶっちゃけ、そっちの方が上記のような細かいこと気にせず作れるので、安心でラクチン。

何がベストかは、そのときの状況次第か。判断が難しいなあ。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/275