メイン 迷える子羊の部屋【初心者専用】 外部ファイルを読み込む際のNowLodingについて | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
terumitsu | Åê¹ÆNo.20451 投稿日時: 2005-9-22 13:27 |
新米 居住地: 投稿: 17
使用環境:
WindowsXP,FlashMX Professional 2004 |
外部ファイルを読み込む際のNowLodingについて 現在、参考書を片手に外部ファイルを読み込んでムービー再生するFlashを作成している初心者です。
一通り本に目を通してみて、フレーム内にムービーが配置されている場合は何とかNowLoadingの表示に成功したのですが、 外部ファイルを読み込みにした時うまくNowLoadingが表示されず、いきなりムービーが始まってしまいます。 今やっているやり方(本を参考にしたもの)が 1.1?4フレームまでをLoadラベル、5?8フレームをmovieラベルにする 2.4フレーム目に per = Math.floor(getBytesLoaded()/getBytesTotal()*100); trace(getBytesTotal()); bar_mov._xscale = per; if(_framesloaded < _totalframes){ this.gotoAndPlay("load"); }else{ this.gotoAndPlay("movie"); } を書き込む 3.perの結果を参照して%表示とローディングバーが表示される となっています。 movieラベルからムービーを再生しているのですが、ここで分からないのが、「getBytesLoaded()は何を参照しているのか?」ということです。 自分が持っている本を見ると「MovieClipのロードされたバイト数を取得する」と書いてあるのですが、 上記の処理の場合MovieClipはどれにあたるのでしょうか? そして上記の処理を改良して外部からswfファイルを読み込もうとしました。 外部データをロードする「base」MovieClipを作成しました。 まず5フレーム以降のムービーを単純に _root.base.loadMovie("swf/stream_testj.swf"); としたところif文を通らず失敗。 次に1フレーム目に _root.base.loadMovie("swf/stream_testj.swf"); を記述したところいきなりムービーがスタートしてしまいました。 さらにロードの同フレーム内に per = Math.floor(_root.base.getBytesLoaded()/_root.basegetBytesTotal()*100);? を記入してもいきなり始まってしまいました。 上記のロード後に trace(_root.base.getBytesLoaded()); でバイト数を表示してみると、180000バイト位のムービーが約900 バイトと表示されました。 また、ロードの直後に stop(); _root.base.stop(); と記入してみると、メインのタイムラインは停止するのですがムービーだけはひたすら流れてしまいました。 どういった処理の流れを作れば外部ムービーのローディング→再生 といった処理ができるのでしょうか? 恐らく根本的な部分に間違いがあるような気がするのですが、自分では思いつかないので投稿させていただきました。 どうかご教授の方お願いします。 |
グッピー堀内 | Åê¹ÆNo.20463 投稿日時: 2005-9-22 17:29 |
常連 居住地: 都内某駅前 投稿: 68
使用環境:
Win2000, Flash MX 2004 MacOSX, Flash MX 2004 |
Re: 外部ファイルを読み込む際のNowLodingについて ファイルを読みきったこと確認してから
指定のフレームに飛ぶなどの動作を行えば問題なく動作するかと思います。 今回の場合ですと、 if(_framesloaded < _totalframes){ の部分が、ロードの完了判定を行っています。 ココに注目してヘルプや、参考書を探ってみることをオススメします。 ちなみに「per」は、プログレスバーの幅を変更しているだけですので正常にバーの幅が変更されるようになったこと以外、この構文において読み込み判定になんら影響はありません。 |
ひろゆき | Åê¹ÆNo.20476 投稿日時: 2005-9-23 18:26 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: 外部ファイルを読み込む際のNowLodingについて 「JPG外部読み込み&ローディング」に
野中さんが作られた外部jpgのloaderへのリンクがあるので、 スレッドをお読みになってみてはいかがでしょう? あるいは、「MovieClipLoader」でフォーラム内を検索してみると、 有益な情報が見つかるかもしれません。
|
terumitsu | Åê¹ÆNo.20503 投稿日時: 2005-9-26 11:17 |
新米 居住地: 投稿: 17
使用環境:
WindowsXP,FlashMX Professional 2004 |
Re: 外部ファイルを読み込む際のNowLodingについて ご教授ありがとうございました。
どういったコメントで検索すればいいのかよく分からず、 NowLodingで検索してみたところチンプンカンプンで途方にくれていました。 何とか解決いたしました。ありがとうございます。 また何かありましたらよろしくお願いします。 |
terumitsu | Åê¹ÆNo.20505 投稿日時: 2005-9-26 15:10 |
新米 居住地: 投稿: 17
使用環境:
WindowsXP,FlashMX Professional 2004 |
Re: 外部ファイルを読み込む際のNowLodingについて ひろゆきさんと堀内さんの助言+参考書を使用し
何とかNowLodingは表示できたのですが、ここで問題が発生しました。 なぜかLodingの途中でムービーが再生してしまいます。 やり方としては Lodingレイヤーを作成し、 1フレーム目に //読み込み this.base.loadMovie("swf/stream_test.swf"); //初期化 bar_mov._xscale = 0; per = 0; 2フレーム目に //タイムバーを伸ばす bar_mov._xscale = per; 3フレーム目に //読み込み率の取得 per = Math.floor(_root.base.getBytesLoaded()/_root.base.getBytesTotal()*100); //フレームの読み込み数による分岐処理 //読み込みフレーム番号より、総フレーム数の方が大きければ if(_root.base._framesloaded < _root.base._totalframes){ this.gotoAndPlay(_currentframe-1); //前のフレームに移行 }else{ //それ以外なら gotoAndPlay("4"); //次のフレームに移行 } 4フレーム目に stop(); を記述しています。 そして同レイヤーの2フレーム目に %表示とタイムバーの表示を行っています。 また、ムービーを表示するbaseですが、 読み込みが終了するまでは非表示にしておきたかったので baseレイヤーを作りそこにbeseムービークリップを作成 1,2フレームではアルファ0で透明に 3,4フレームではアルファを戻し表示しています。 この状態で外部ファイルを読み込み、ダウンロードのシミュレートを行うと 65?70%くらいの時に再生が始まってしまいます。 透明にしていたbeseを表示させると、どうやらこれが再生しているらしく %表示が100%になるときちんと3フレームへ移行しムービーの再生が始まります。 外部ファイルの重さが約650KBですので、大よそ400KB読み込んだところでムービーの再生がスタートしていることになります。 何が原因なのかまったく分からず途方にくれています。 もし構文に間違いがあるようでしたら指摘をお願いします。 |
グッピー堀内 | Åê¹ÆNo.20507 投稿日時: 2005-9-26 18:05 |
常連 居住地: 都内某駅前 投稿: 68
使用環境:
Win2000, Flash MX 2004 MacOSX, Flash MX 2004 |
Re: 外部ファイルを読み込む際のNowLodingについて 原因は、実際の中身を見ないと確実なことは言えませんが
if(_root.base._framesloaded < _root.base._totalframes){ の部分を if(per == 100){ に書き換えてみての動作はいかがでしょうか? |
terumitsu | Åê¹ÆNo.20511 投稿日時: 2005-9-26 18:30 |
新米 居住地: 投稿: 17
使用環境:
WindowsXP,FlashMX Professional 2004 |
Re: 外部ファイルを読み込む際のNowLodingについて 堀内様、ご返答ありがとうございます。
試してみましたがやはり無理でした。 無理やりな修正として 3フレーム目の処理を //フレームの読み込み数による分岐処理 //総データサイズが0より大きく、かつロードしたバイト数が総データサイズに達したことを確認 if(_root.base.getBytesTotal()>0 && _root.base.getBytesLoaded()>=_root.base.getBytesTotal()){ gotoAndPlay("4"); //次のフレームに移行 }else{ //それ以外なら _root.base.stop(); this.gotoAndPlay(_currentframe-1); //前のフレームに移行 } と変更し、 4フレーム目で _root.base.play(); stop(); とすることで何とかしています。 ただこれは処理を無理やり停止させているだけであって 「なぜ、こんな現象が起きたのか?」がまったく分からない状態になっています。 今後のためにも何か参考になるようなものがありましたら、ぜひご教授のほうお願いします。 |
ひろゆき | Åê¹ÆNo.20512 投稿日時: 2005-9-26 18:38 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: 外部ファイルを読み込む際のNowLodingについて 直接関係あるとは思えませんが、気になったので。
フレーム名に「4」と名付けているのでなければ、正しくは
|
グッピー堀内 | Åê¹ÆNo.20519 投稿日時: 2005-9-26 20:29 |
常連 居住地: 都内某駅前 投稿: 68
使用環境:
Win2000, Flash MX 2004 MacOSX, Flash MX 2004 |
Re: 外部ファイルを読み込む際のNowLodingについて もしかしたら、その挙動は正常な状態かもしれませんね。
たぶんですが、SWFの全データを読み込まずとも、再生に足りるだけのデータがダウンロードされた状態であれば、強制的に再生を開始しているのかもしれません。 もし、この説が正しかった場合の対処法としてあげられるのが 1・SWFの側の先頭フレームにSTOPを追加。 2・読み込みMCを読み込み前に、_visibleをfalseにして、読み込み完了したら、_visibleをtrueにする。(SWFの側で、_visibleを変更していた場合は無意味になる可能性アリ。) それと、_root.base.stop();でしょうか。 と言った、仮説を立ててみました。 |
ひろゆき | Åê¹ÆNo.20528 投稿日時: 2005-9-27 4:16 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: 外部ファイルを読み込む際のNowLodingについて このスレッドを読んでいて、
MovieClipLoader を使ってみようかと思い立ち、作ってみました。 「MovieClipLoaderで読み込む」 参考までに。
|
(1) 2 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |