下面的代码使用URLStream类,从ADOBE官方网站加载Flash新闻。代码中使用ProgressEvent时间检测下载的进度。当下载数据达到一定量时,将数据用TextField文本呈现在舞台上,然后关闭URLStream对象。
var mystream:URLStream=new URLStream();
mystream.load(new URLRequest("http://www.adobe.com/products/flash/news/"));
//处理流加载进度事件
mystream.addEventListener(ProgressEvent.PROGRESS,prohan);
//处理流加载完成事件
mystream.addEventListener(Event.COMPLETE,comphan);
//流加载进度侦听器函数
function prohan(pe:ProgressEvent):void{
trace(pe.bytesLoaded);
var count:uint;
count=3000;
//判断加载量
if(pe.bytesLoaded>count){
var tf:TextField=new TextField();
tf.text=pe.target.readMultiByte(count,"UTF-8");
tf.width=550;
tf.height=400;
tf.selectable=false;
tf.multiline=true;
stage.addChild(tf);
pe.target.close();
}
}
//流加载完成
function comphan(ce:Event):void{
trace("over!");
}
程序的执行结果如图所示:
URLStream对象包含的加载数据是ByteArray类型,需要使用ByteArray的相关方法读取。在本例中,由于加载的网页采用了“UTF-8”的编码方式,所以可以直接使用readMultiByte()方法输出字符串。对于一些动态内容,URLStream加载时,不能获得文件的大小,只能计算已加载的数据量。如果网络阻塞或者连接极其缓慢,则加载即使很长时间都不能成功,也难以捕获消息。为了防止异常,应设定一个计时器追踪URLStream的加载情况。
虽然可以使用URLStream读取远程的JPG图像,但是由于JPG图像时压缩存储的,在未经解码之前,不能直接作为像素值,因此也无法写入BitmapData并创建屏幕显示。