[AS3]as3的URLLoader与URLStream加载数据
a、URLLoader与URLStream
区别就是URLLoader需要等到所有的数据下载完成之后,才能获取,而URLStream可以一边下载,一边就可以取到数据了
数据:e.target.data stream.readBytes(byte,byte.length);
b、Loader.loadBytes,可以直接发送数据给Loader,而不是让Loader去下载。每一次loadBytes,Loader都会丢弃以前的数据
- _loader = new Loader();
- this.addChild(_loader);
- private function progress(e:ProgressEvent):void{
- var count:int = 50000;
- if (stream.connected){
- stream.readBytes(byte, byte.length); //若是完成事件stream.readBytes(byte);
- }
- if(e.bytesLoaded > count){
- //stream.close();
- }
- trace(byte.length);
- showImage();
- }
- public function showImage():void {
- if (stream.connected){
- stream.readBytes(byte, byte.length);
- }
- _loader.unload();
- _loader.loadBytes(byte);
- }
加载完成事件
- public function streamComplete(e:Event):void {
- stream.removeEventListener(Event.COMPLETE, streamComplete);
- var byte:ByteArray = new ByteArray();
- stream.readBytes(byte);
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderHandler);
- loader.loadBytes(ba);
- stream.close();
- }
- private function onLoaderHandler(e:Event):void{
- e.target.removeEventListener(Event.COMPLETE,onLoaderHandler);
- }
2、URLStream对象包含的加载数据是ByteArray类型,需要使用ByteArray的相关方法读取。
1.若加载的网页采用了“UTF-8”的编码方式,所以可以直接使用readMultiByte()方法输出字符串。对于一些动态内容,URLStream加载时,不能获得文件的大小,只能计算已加载的数据量。如果网络阻塞或者连接极其缓慢,则加载即使很长时间都不能成功,也难以捕获消息。为了防止异常,应设定一个计时器追踪URLStream的加载情况。
2.可以使用URLStream读取远程的图像,需将urlstream字节数指定到bytearray中,在通过loader.loadBytes()加载获取
3.PNG可以使用PNGDeconder.decodeImage(bytes)转换BitmapData数据
JPG图像时压缩存储的,在未经解码之前,不能直接作为像素值,因此也无法写入BitmapData
(图片是JPG格式,但它不一定是支持渐进加载的,PS中保存图片时有选项。
Loader不管是否加载完成都可以加入显示列表)
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例