`

[转]flash中利用Loader.loadBytes方法和URLStream类实现图片的逐步加载

阅读更多
http://blog.csdn.net/shangmw/archive/2010/09/02/5858982.aspx

在Flash中,有Loader类,可以从外部载入一张图片(或swf文件)。但是有个不好的地方就是,不像浏览器那样一边下载一边显示。
所幸的是,Flash提供了Loader.loadBytes方法和URLStream类。
首先,要使用URLStream类,而不是URLLoader。它们的区别就是URLLoader需要等到所有的数据下载完成之后,才能获取。而URLStream可以一边下载,一边就可以取到数据了。
其次,Loader.loadBytes,可以直接发送数据给Loader,而不是让Loader去下载。每一次loadBytes,Loader都会丢弃以前的数据,所以在代码中使用了_data的ByteArray保存数据。
代码如下:

1 package
2 {
3     import flash.display.Loader;
4     import flash.display.Sprite;
5     import flash.display.StageAlign;
6     import flash.events.ContextMenuEvent;
7     import flash.events.Event;
8     import flash.net.URLRequest;
9     import flash.net.URLStream;
10     import flash.ui.ContextMenu;
11     import flash.ui.ContextMenuItem;
12     import flash.utils.ByteArray;
13     import flash.utils.getTimer;
14     public class Main extends Sprite
15     {
16         private var _loader:Loader = new Loader();
17         private var _urlstream:URLStream = new URLStream();
18         private var _data:ByteArray = new ByteArray();
19         public function Main():void
20         {
21             var loadmenu:ContextMenuItem = new ContextMenuItem("Load image");
22             loadmenu.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, this.onLoadImage, false);
23             this.contextMenu = new ContextMenu();
24             this.contextMenu.customItems.push(loadmenu);
25            
26             _urlstream.addEventListener('progress', processData);
27             _urlstream.addEventListener('complete', processData);
28            
29             addChild(_loader);
30            
31             stage.align = StageAlign.TOP_LEFT;
32         }
33         public function onLoadImage(e:Event):void
34         {
35             _loader.unload();
36             _data.length = 0;
37             var url:String = "http://files.cnblogs.com/Greatest/test.jpg.zip";
38             _urlstream.load(new URLRequest(url + "?q=" + getTimer()))
39         }
40         public function processData(e:Event):void
41         {
42             var oldlen:int = _data.length;
43             _urlstream.readBytes(_data, _data.length);
44             if (_data.length > oldlen)
45             {
46                 _loader.loadBytes(_data);
47             }
48         }
49     }
50 }
from:http://www.xker.com/page/e2009/1006/80637.html
分享到:
评论

相关推荐

    flash加载外部图片

    首先,我们需要了解Flash中的两种主要的图片加载方式:使用Loader类和使用BitmapData类。Loader类是ActionScript 3.0中用于加载图形内容的主要工具,包括图片、SWF文件等。BitmapData类则用于处理位图数据,它可以...

    flash资源加载策略

    Flash资源加载策略是优化Flash应用程序性能的关键因素,主要涉及到如何有效地加载和管理各种类型的资源,如图像、文本、音频和SWF文件等。在Flash中,有两个主要的加载类:URLLoader和Loader。 URLLoader主要用于...

    Adobe Flash Builder 4.5 Android Air 程序开发系列 之八 照相机

    通过以上步骤,你可以在Adobe Flash Builder 4.5中开发Android AIR应用程序,利用`CameraRoll`和`Loader`类实现相机和相册功能,使用户能够浏览、选择并显示设备上的图片。注意处理可能的错误和事件,确保应用的健壮...

    FLEX代码,图片调用

    2. **动态加载**:使用`URLLoader`或`Loader`类动态加载图片资源。 3. **嵌入资源**:通过`Embed`元数据将图片资源直接嵌入到AS文件中。 4. **ByteArray方式**:将图片转换为`ByteArray`格式后加载。 其中,第四种...

    Flex运行时加载ICON

    `Loader`类是ActionScript 3.0中的一个核心组件,它负责加载各种类型的媒体,包括图像(如GIF和JPEG)。 以下是使用`Loader`类加载图像的基本步骤: 1. 创建`Loader`对象:`var loader:Loader = new Loader();` 2....

    flex 打开本地图片

    flex 打开本地图片并进行显示 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoadByted); loader.loadBytes(this.fileReference.data);

    Flex 上传图片 预览 加载图片到内存

    本篇文章将详细讲解如何在Flex中实现实时图片预览和加载图片到内存的技术。 首先,我们要明白Flex中的图片处理主要是通过`mx.controls.Image`组件来完成的。`Image`组件可以显示静态图像,如JPEG、PNG和GIF格式。...

    flash 上传头像

    `Loader.loadBytes()`方法接收`FileReference`对象的`data`属性(即用户选择文件的二进制数据),加载完成后,图片可以在舞台上进行展示。 4. **图片裁剪**:为了适应不同的头像尺寸要求,通常会添加裁剪功能。这...

    通过ByteArray来播放MP3

    要通过`ByteArray`播放MP3文件,我们首先需要创建一个包含MP3文件的SWF文件,然后使用`Loader.loadBytes()`方法来加载这个SWF文件。 ### 创建包含MP3的SWF文件 为了演示如何将MP3文件嵌入到SWF文件中,我们可以...

    AS3 PNG图片转二进制

    在AS3(ActionScript 3)中,将PNG图片转换为二进制数据是一种常见的优化图像加载和显示的方法。这主要是因为二进制数据能够更有效地处理和传输,特别是对于大量图片的应用,如游戏或者多媒体项目。以下是关于这个...

    ForcibleLoader.as 将加载的version 9以下的swf转换成version 9以上的swf

    由于每个SWF版本都引入了新的特性和功能,低版本的SWF在高版本的Flash Player环境中可能无法正常工作或无法充分利用新特性。`ForcibleLoader.as` 类提供了一个解决方案,它允许开发者将版本9以下的SWF文件转换为版本...

    php与flash as3 socket通信传送文件实现代码

    前段时间在flashseer看到有人提到:可以通过socket方式传送swf文件,让用户无法获取到swf文件… 当时还没有出as3的反...前台swf适用Loader.loadBytes方法显示主程序文件. 下面是测试的源程序: package { import flas

    AS3.0的加载机制

    Loader类是AS3.0中用于加载和管理外部资源的核心类之一,它可以加载各种类型的文件,如SWF、JPEG、GIF和PNG等格式。以下是对Loader类的一些关键方法和属性的介绍: 1. **构造函数Loader()**:创建一个新的Loader...

    AS3动态加载字体

    在ActionScript 3 (AS3)中,动态加载字体是一种技术,允许开发者在应用程序运行时加载和使用新的字体。这可以极大地提高应用的灵活性,尤其是对于那些需要展示各种独特字体或者用户可定制字体的应用。本知识点将深入...

    本地播放器(ActionScript 3.0实现)

    1. **加载媒体文件**:ActionScript 3.0中的`flash.net`包提供了`Loader`类,可以用来加载各种类型的二进制数据,包括音频和视频文件。通过`LoaderContext`,我们可以设置加载策略,如允许跨域访问或者指定安全沙箱...

    pixel_bender_basics.zip_adobe flash_pixelbender_roundwps

    1. 加载PBK文件:首先,你需要使用`loadBytes()`方法加载PBK文件内容,然后通过`Pixel Bender Loader`类解析这个字节数据。 2. 创建滤镜实例:解析完成后,你可以创建一个`Pixel Bender Filter`实例,传入解析出的...

    LINQPad Premium 5.36.03 (Any CPU)

    有在LINQPad的的Util类新方法来加载/字符串或字节数组保存到一个中央计算机存储(查询之间共享)。这些方法Util.SaveString,Util.SaveBytes,Util.LoadString和Util.LoadBytes。 LINQPad的嵌入式ILSpy现在已经更新...

    LINQPad_Premium_5.36.03_Any_CPU 含破解

    These methods are Util.SaveString, Util.SaveBytes, Util.LoadString, and Util.LoadBytes. LINQPad's embedded ILSpy has now been updated to V4. You can now enable or disable compiler optimizations on a ...

    vb读取txt文件到textbox.doc

    "VB 读取 txt 文件到 textbox" VB 读取 txt 文件到 textbox 是 VB 编程中的一种常见...VB 读取 txt 文件到 textbox 可以通过多种方法来实现,包括使用 File 系统对象、TextStream 对象和 FileSystemObject 对象等。

Global site tag (gtag.js) - Google Analytics