• ベストアンサー

Flash再生中につぎのフレームをLoadingしときたい

わたしのしたいことは Flashの再生中に次のフレームをloadingしときたいのです まずswfファイルの容量が約2MBあるため 完全にloadingしてから、表示するのに1分ぐらいかかるからです。 ですから、2MBを3分割しながら再生したいのです。 もちろん再生中はつぎのフレームをloadingしてスムーズに つなぎ目なく再生するのが目標です。 まずフレーム数が900あります。 3分割で10000/3=300づつ再生することにします。 まず最初は Now Loading※(1~300まで)→次に1~300まで再生(その間300~600までload中とする)→次に300~600まで再生(その間は600~900までloadする)→最後のフレーム900でstopとしたいです ※最初のみNow Loading画面でかまわない。それ以降 はつなぎ目なく再生。 今回はボタン等使わず単なるながれる動作です。 わかるかたよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

映画のように流れるようなムービーですよね。2MBくらいの。 それだと#1の方の書かれているように,ちょっと重いですがファイルは2MBのままで, 別に最初に100%読み込まずとも、最後まで中断しない程度まで読み込ませてスタートさせても良いと思います。 本当にローディング状態を求めて100%になって再生を始めるのではなく, 1フレーム目に数秒から十数秒のムービークリップを置いておいて, メインムービーだけは,フレーム1で stop(); 。 そして,そのオープニングムービーが終わるとフレーム2に行くようなサイトもけっこうあります。 ちょっと時間稼ぎをするだけです。 「NowLoading」とか出てきても,それはどんな回線状況でも同じように必ず「NowLoading」を表示させているだけのサイトもけっこうあります。 ムービーが始まるといきなり違うフレームに飛ぶとか, そのムービーが始まってすぐにボタンが出没して,どのフレームに飛ぶかわからないとか, 重い音が1フレーム目から鳴り出すとか, そういうのでないかぎり,100%読み込むのを待つ必要はありません。 流れるようなムービーは,流れがギクシャクしなければ良いだけです。 読み込みながら再生をスタートできるところがFlashの長所です。 わざわざその長所を「NowLoading」でつぶす必要はありません。 フレームレートが,わかりませんが, 仮にフレームレートが,デフォルトの12fpsであるとして 1000フレーム再生には, 83 秒かかるわけです。 ロード時間が約60秒ですから, 再生時間(83秒)>ロード時間(秒) なので, ムービーの重さが均一であって,回線速度がそれより遅い場合がないと想定すると, Now Loading画面自体も不要となります。 でも, ムービーの重さが均一であって,回線速度がそれより遅い場合がないということはないと思うので, Now Loading画面は少しは必要だと思います。 ---------------------------------- 分割する場合で,あらかじめロードしておきたい場合も 流れるようなムービーの場合は極めて簡単で, ムービーをロードしても,ロードしたムービーを指示があるまで(フレーム300に到達するまで), stop(); をかけておいて,指示があれば(フレーム300に到達すると), play(); させれば良いだけです。 読み込みを待って云々カンヌンという面倒くさいことは一切考える必要はありません。 >> Now Loading※(1~300まで)→次に1~300まで再生 この最初のムービーの上にさらにレイヤーを作って, そのムービーのステージ左上の角に, 仮に「MC1」と「MC2」というインスタンス名の, 透明もしくは空のムービークリップを作っておいて, フレーム200とか250とかあたりに, _root.MC1.loadMovie("2番目の.swf"); これで,2番目のSWFファイルが,読み込まれます。 読み込まれますが,2番目の.swf の最初のフレームを空にして, stop();と書いておけば再生はされません。 最終フレーム300あたりに, stop(); _root.MC1.play(); これで,2番目の.swf の再生がスムーズに始まります。 2番目の.swf の フレーム200とか250とかあたりに, _root.MC2.loadMovie("3番目の.swf"); 最終フレーム300あたりに, stop(); _root.MC2.play(); _root.MC1.unloadMovie(); ---------------------------------- しかし,この分割をしたからと言って, 状態が分割をしない場合より改善される見込みは少ないです。 100%読み込む前に見切り発進したほうが,いい結果を生むような気がします。

taira812
質問者

お礼

相変わらず、詳細な説明ありがとうございます。 心強いご回答でございます。大変参考になります。 現在、ムービーを製作している段階で解説を参考にしながらいろいろ試行させていただきます。 またわからないことがあればよろしくおねがいします。

その他の回答 (1)

回答No.1

最初に100%読み込まずとも、最後まで中断しない程度まで読み込ませれば良いと思いますよ。 プロファイラを使用してどこでムービーが中断するかを見ながら調整すると良いと思います。 プロファイラの表示方法に関してはヘルプなどで調べてみてください。 また、ムービーが軽くなるように工夫を凝らすもの大切です。

taira812
質問者

お礼

ご回答ありがとうございました、なるべくムービーを 軽くする方法もがんばっていますが、あまり欲張ると 削っても重くなってしまいやはりきりがないみたいで すね(笑)またわからないことがあればよろしくおねがいします。

taira812
質問者

補足

ご回答ありがとうございます。 私は動画をフレームにして再生しています。プロファイラでは限界があります。もちろん音楽をMP3にて軽くしたりしてます。ですのでどうしても最初の質問したとおり、 ポイントごとに先読み再生をしなければならないのです。 そのスクリプトを知っている方おしえてください。 (もちろん、いくら先読みできても回線によっては、先読みが再生のスピードに追いつかれ一時停止→再生する場合があるのは承知済です。)

関連するQ&A