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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     jpgを読み込む時にロードした量を取得したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takaji
Åê¹ÆNo.11348
投稿日時: 2004-10-7 18:37
新米
居住地:
投稿: 11
使用環境:
WIN2000,FlashMX
jpgを読み込む時にロードした量を取得したい
いつもありがたく使わせて頂いています。

読み込まれるMC名にてgetBytesLoaded()とBytesTotal()で
Loaded>=Totalになる過程のLoadedの値が取得出来ていないようで
どこが具合悪いのか考え込んでいます。

http://www.geocities.jp/super_takaji/test/test.fla
お手数ですがその状態のFlaファイルを載せますので
アドバイスを頂ければ幸いです。
KURAGE
Åê¹ÆNo.11390
投稿日時: 2004-10-8 15:49
常連
居住地: 東京都
投稿: 199
使用環境:
Flash 4?8/Lite 1?2
2000/XP
OSX 10.3
qurage.net
AS2HTML
Re: jpgを読み込む時にロードした量を取得したい
こんにちは
ざっと見たところスクリプト自体に間違いはありません

簡単に言うと判定タイミングの問題です

MovieClip.load()
で読み込んだファイルが実際に読み込まれるまでに多少のラグがあります(ネットワーク状況等により大きく左右される)

実際に読み込みが開始される前に
MovieClip.getBytesTotal()
を取得してしまうと、読み込み前の値(今回で言えばload_Imageのbyte数)だったり-1が返ってきてしまいますので

「読み込みが開始されているかどうか」のチェックを設けることで解決できます。

以下簡単なサンプル
// frame 1
// 現在のサイズを保持しておく
var startByte = load_Image.getBytesTotal();	
trace("LOAD START->"+startByte);
load_Image.loadMovie("xxxxxx.jpg");
 
// frame 3
// サイズを取得
total = load_Image.getBytesTotal();

if(total == startByte || total < 0){
	// サイズが元のまま or 0未満の場合は接続待ち
	trace("CONNECTION WAIT->"+total);
	this.gotoAndPlay(_currentframe-1);
}else{
	// 新しいサイズが取得出来た
	trace("OK->"+total);
	this.stop();
}
takaji
Åê¹ÆNo.11398
投稿日時: 2004-10-8 17:55
新米
居住地:
投稿: 11
使用環境:
WIN2000,FlashMX
ありがとうございます
タイムラグですか。
解説本にその事が書かれていればいいのに?
このような系統で行き詰るのは俺だけなんでしょうかね?(汗)
野中文雄
Åê¹ÆNo.11407
投稿日時: 2004-10-9 1:07
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ありがとうございます
SWFの読込み状況は、onClipEvent (data)ハンドラで確認すると便利です。
MovieClip.loadMovieで外部ファイルを読込む

「その事が書かれて」いる「解説本」を利用されればよいように思います。
引用:
オブジェクト指向で考えるActionScript』p.168?:
ロードの完了は、'onClipEvent (data)'ハンドラのなかで読込み済みのデータサイズを調べて確認する必要があります。MovieClipのロードされたデータサイズは'MovieClip.getBytesLoaded' メソッドで、トータルサイズは'MovieClip.getBytesTotal'メソッドで調べることができます。ただ、環境によっては、ロード開始時にこれらの値がともに0 を返すことがあるようです。
 オーサリング時に作成した空のMovieClipインスタンスは、トータルサイズとして4バイトを返しますので、これを判定に加えればよいでしょう。ロード完了後に処理を行うためのスクリプトは、次のようなスタイルになります。

◎MovieClip.loadMovieのロード完了後に処理を行うMovieClipアクション
onClipEvent (data) {
    if (this.getBytesTotal()>4 && this.getBytesLoaded()
        >=this.getBytesTotal()) {
        // ロード完了後の処理

引用:
takajiさんは書きました:
タイムラグですか。
解説本にその事が書かれていればいいのに?


----------------
 

takaji
Åê¹ÆNo.11410
投稿日時: 2004-10-9 3:31
新米
居住地:
投稿: 11
使用環境:
WIN2000,FlashMX
Re:
野中さんありがとうございます。
「その事が書かれている解説本」(笑)探してみます。
田舎なので通販で探した方が早いかもしれませんが…
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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