トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     外部ファイルを読み込む際の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」と名付けているのでなければ、正しくは
  gotoAndPlay(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 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops