[PR]今日のニュースは
「Infoseek モバイル」




すべて読み込んでから再生を開始したい


サンプルをダウンロード




1.自動的に再生しないよう停止する


まず、自動的に再生しないようにタイムラインの2番目に タイムラインの 1 番目に戻るようにスクリプトを追加します。


タイムラインの 1 フレーム目に戻る(タイムラインの2フレーム目に記述)

_root.gotoAndStop(1);

stop() を使わないのは、ユーザーがメニューから再生を選択したときでも再生しないようにするためです。





2.すべて読み込んだら再生する


読み込んだバイト数を調べるには、_root.getBytesLoaded() メソッドを使用します。


読み込みんだバイト数を調べる

trace( _root.getBytesLoaded() );


合計バイト数を調べるには、_root.getBytesTotal() メソッドを使用します。


合計バイト数を調べる

trace( _root.getBytesTotal() );


この2つのパラメータが一致したときに、読み込みが完了した事がわかります。

そこで毎フレームこの2つの値が一致してないか監視します。一致していれば、3 フレーム目にジャンプするようにします。 ダミーのムービークリップ "mc" をタイムラインの1フレーム目に配置して、以下のスクリプトを記述します。


読み込みが完了したら 3 フレーム目から再生

onClipEvent (enterFrame) {
	var now = _root.getBytesLoaded();	// 読み込んだバイト数
	var total = _root.getBytesTotal();	// 総バイト数
	
	// すべて読み込んだら
	if( now == total ){
		_root.gotoAndPlay(3);		// 3 フレーム目へジャンプ
	}
}


読み込みが完了したら 3 フレーム目から再生(Flash 6 以降)

mc.onEnterFrame = function(){
	var now = _root.getBytesLoaded();	// 読み込んだバイト数
	var total = _root.getBytesTotal();	// 総バイト数
	
	// すべて読み込んだら
	if( now == total ){
		this.onEnterFrame = null;	// このイベントを終了
		_root.gotoAndPlay(3);		// 3 フレーム目へジャンプ
	}
}






読み込まれたバイト数を調べたい


サンプルをダウンロード




■読み込まれているバイト数を取得する


読み込んだバイト数を調べるには、_root.getBytesLoaded() メソッドを使用します。


読み込みバイト数を調べる

var now = _root.getBytesLoaded();






読み込まれたパーセントを調べたい


サンプルをダウンロード




■読み込まれているパーセントを調べる


読み込んだバイト数を調べるには、_root.getBytesLoaded() メソッドを使用します。合計バイト数を調べるには、_root.getBytesTotal() メソッドを使用します。 この2つのパラメータからパーセントを以下のように計算します。


読み込みのパーセントを調べる

var percent = ( _root.getBytesLoaded() / _root.getBytesTotal() ) * 100;


ここから小数部分を切り捨てるには Math.floor() メソッドを使用します。


読み込みのパーセントを調べる(少数切捨て)

var percent = ( _root.getBytesLoaded() / _root.getBytesTotal() ) * 100;
percent = Math.floor(percent);






読み込まれた状況をメータで表示したい


サンプルをダウンロード




■幅を操作してメータを表現する


右方向に増え続けるロードメータを作ろうと思います。











まず、ロードメータのイラストを作成します。バーの部分は、左端を原点としたムービークリップにしておきます。ここではインスタンス名 "mc" とします。








次にスクリプトです。
はじめに、この "mc" の _xscale を 0 にしておきます。そして読み込まれるパーセントに合わせて _xscale も増やしていき、完全に読み込まれたら元の等倍 100 になるようにします。


読み込みに合わせてx 方向の拡大率を変更する

onClipEvent (load) {
	_xscale = 0;
}

onClipEvent (enterFrame ) {
	_xscale = ( _root.getBytesLoaded() / _root.getBytesTotal() ) * 100;
}


読み込みに合わせてムービークリップ "mc" の x 方向の拡大率を変更する(Flash 6 以降)

mc._xscale = 0;
mc.onEnterFrame = function() {
	this._xscale = ( _root.getBytesLoaded() / _root.getBytesTotal() ) * 100;
}






サンプルをダウンロード




■100フレーム分のタイムラインを操作して演出する


ムービークリップを作成し、タイムラインの 1 フレーム目から 100 フレーム目にかけて、ロードメータが充填されるアニメーション演出を追加します。

そのムービークリップにインスタンス名 "mc" と名前をつけ、以下のスクリプトを記述します。


読み込みに合わせてタイムラインを変更する

onClipEvent (load) {
	stop();
}

onClipEvent (enterFrame ) {
	gotoAndStop(Math.floor(( _root.getBytesLoaded() / _root.getBytesTotal() ) * 100 + 0.5) + 1);
}


読み込みに合わせてムービークリップ "mc" のタイムラインを変更する(Flash 6 以降)

mc.stop();
mc.onEnterFrame = function(){
	this.gotoAndStop(Math.floor(( _root.getBytesLoaded() / _root.getBytesTotal() ) * 100 + 0.5) + 1);
}






読み込みの転送量を調べたい


サンプルをダウンロード




■読み込みの転送量を調べる


1 秒間にどれだけの容量が読み込まれたか調べます。


転送量を調べる

onClipEvent (load) {
	var time = 1000;	// 表示を更新する時間(ミリ秒)
	var old_timer = getTimer();
	var old_now = _root.getBytesLoaded();
	var tensou = 0;	// 転送量
}
onClipEvent (enterFrame) {
	if (getTimer()-old_timer >= time) {
		tensou = (_root.getBytesLoaded() - old_now) / time / 1000;	// 転送量を更新
		old_timer = getTimer();
		old_now = _root.getBytesLoaded();
	}
}


転送量を調べる(Flash 6 以降)

var time = 1000;	// 表示を更新する時間(ミリ秒)
var old_timer = getTimer();
var old_now = _root.getBytesLoaded();
var tensou = 0;	// 転送量

onEnterFrame = function(){
	if (getTimer()-old_timer >= time) {
		tensou = (_root.getBytesLoaded() - old_now) / time / 1000;	// 転送量を更新
		old_timer = getTimer();
		old_now = _root.getBytesLoaded();
	}
}






読み込み完了までの推定時間を調べたい


サンプルをダウンロード




■読み込み完了までの推定時間を調べる


一定時間内の転送量を調べて、その量からどれだけの時間ですべての転送が終了するか計算します。


読み込み完了までの推定時間を調べる

onClipEvent (load) {
	var time = 1000;	// 表示が変わる時間(ミリ秒)
	var old_timer = getTimer();
	var old_now = _root.getBytesLoaded();
}
onClipEvent (enterFrame) {
	
	if (getTimer()-old_timer>=time) {
	
		var now = _root.getBytesLoaded();
		var total = _root.getBytesTotal();
		var down = (now - old_now) / (getTimer() - old_timer);
		var second = (total - now) / down / 1000;
		var minute = Math.floor(second / 60);
		second = Math.floor(second % 60);
		
		var nokori = ((minute < 10) ? "0":"") + minute + ":" + ((second < 10) ? "0":"") + second;

		old_timer = getTimer();
		old_now = _root.getBytesLoaded();
	}
}


読み込み完了までの推定時間を調べる(Flash 6 以降)

var time = 1000;	// 表示が変わる時間(ミリ秒)
var old_timer = getTimer();
var old_now = _root.getBytesLoaded();

onEnterFrame = function(){
	if (getTimer()-old_timer>=time) {
	
		var now = _root.getBytesLoaded();
		var total = _root.getBytesTotal();
		var down = (now - old_now) / (getTimer() - old_timer);
		var second = (total - now) / down / 1000;
		var minute = Math.floor(second / 60);
		second = Math.floor(second % 60);
		
		var nokori = ((minute < 10) ? "0":"") + minute + ":" + ((second < 10) ? "0":"") + second;

		old_timer = getTimer();
		old_now = _root.getBytesLoaded();
	}
}