19.4.检测读取进度

问题
我想知道数据读取的进度
解决办法
监听URLLoader的progress事件
讨论
URLLoader类有个progress事件,当正在下载数据时该事件就会触发。Flash播放器传递一个flash.events.ProgressEvent实例给事件处理函数,以便检查该事件的bytesLoaded和bytesTotal属性。bytesLoaded属性是指已经读取的数据量,bytesTotal属性是指总共要读取的数据量。

下面的代码演示如何监听progress事件:
+展开
-ActionScript
package {
import flash.display.*;
import flash.text.*;
import flash.events.*
import flash.net.*;
public class CheckProgressExample extends Sprite {
private var _output:TextField;
public function CheckProgressExample( ) {
initializeOutput( );
loadData( );
}
private function initializeOutput( ):void {
_output = new TextField( );
_output.width = stage.stageWidth;
_output.height = stage.stageHeight;
addChild( _output );
}
private function loadData( ):void {
var loader:URLLoader = new URLLoader();
// Listen for the progress event to check download progress
loader.addEventListener( ProgressEvent.PROGRESS, handleProgress );
loader.load( new URLRequest( "example.txt" ) );
}
private function handleProgress( event:ProgressEvent ):void {
// Calculate the percentage by multiplying the loaded-to-total
// ratio by 100
var percent:Number = Math.round( event.bytesLoaded / event.bytesTotal * 100 );
_output.text = " Loaded: " + event.bytesLoaded + "\n"
" Total: " + event.bytesTotal + "\n"
"Percent: " + percent;
}
}
}

需要注意的是URLLoader 不能边下载边处理数据,如果想这样可以用URLStream,这将在下一节讨论。

加支付宝好友偷能量挖...


评论(0)网络
阅读(83)喜欢(0)flash/flex/fcs/AIR