dT*blog

design and programming

ロードされる側で 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 処理を負わないといけない。ぶっちゃけ、そっちの方が上記のような細かいこと気にせず作れるので、安心でラクチン。

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

Posted by dT by 18:07

トラックバック

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

コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30