`
qq123zhz
  • 浏览: 539054 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

BulkLoader 多文件加载库(转)

    博客分类:
  • Flex
阅读更多

在BulkLoader 的 add方法中,有下面这些参数:
url:* — 加载对象(String 或者 URLRequest 类型)
props:Object (default = null) — 一些加载对象的属性,有下面这些
preventCache:Boolean — 是否防止缓存
id:String — 添加加载对象时候,也可以给它添加一个id,方便以后调用
priority:int — 还可以通过priority属性调整加载对象的加载顺序,priority值越大,优先权越高,越早加载
maxTries:int — maxTries属性用于设定加载失败时的重试次数
weight:int — 每个文件的大小提前告诉BulkLoader(当你想更精确的得到加载进度的时候,这是一个好的办法)
headers:Array — URLRequest 的头信息,当你传入的url是一个String的时候,BulkLoader也会把这些信息添加到URLRequest里面
context:* — LoaderContext 或者 SoundLoaderContext,加载到ApplicationDomain程序域的时候常用的属性
pausedAtStart:Boolean — 如果是一个nestream 对象,控制对象是否暂停。

BulkLoader提供PROGRESS事件和COMPLETE事件,让我们监视加载状态,用法如下

//添加一个PROGRESS事件,这个事件会在队列加载时不断触发。通常可以用于监听加载进度。
loader.addEventListener(BulkLoader.PROGRESS, onAllItemsProgress);

//添加一个COMPLETE事件,这个事件会在队列里的所有对象都加载完毕后触发
loader.addEventListener(BulkLoader.COMPLETE, onAllItemsLoaded);

//一切准备好后,只要调用start方法就可以开始加载我们添加的素材序列了。
loader.start();

好了,看完上面的大家应该对BulkLoader有了一定了解了,至于一些用法,可以看BulkLoader的文档,或者搜索一下,有很多教程,这里我要说的是我们会遇到的一些问题。
用 BulkLoader实例的add()方法可以很方便地将素材地址加入加载列表
但是当素材太多的时候,加载进度会不准确(progess事件中的totalBytes并不能同步获取所有资源的Bytes)
最精确解决的办法是将 每个文件的大小提前告诉BulkLoader,就是在add里面加入weight值。
但是,这显然不是一个最省事的解决方法。
其实文档里面有一些属性可以给我们使用,通过BulkProgressEvent的loadingStatus方法可以显示加载过程中的所有信息!
大家可以在函数中trace() loadingStatus方法看看,就像下面:

public function onAllItemsProgress(e: BulkProgressEvent):void {
     trace(e.loadingStatus());
}

你会发现 BulkProgressEvent 会有一个 weightPercent属性,通过这个值,差不多可以解决我们的问题了,如果发现加载进度还是有很大误差的话,大家再看看loadingStatus 里面的其他属性,通过自己的算法来解决,不然就只能在 add 的时候,把文件的大小提前告诉 BulkLoader了。

剩下一个会经常需要解决的问题就是程序域的问题了,也就是加载的时候ApplicationDomain的问题,大家都知道 在用 Loader 加载文件的时候,可以在通过LoaderContext开指定加载的域,如下(例子是加载到当前域):

var context:LoaderContext = new LoaderContext();
context.applicationDomain =   new ApplicationDomain(ApplicationDomain.currentDomain);
loader.load(new URLRequest("text.swf"),context);

在BulkLoader里面我们同样可以进行指定,方法也是差不多的。

var loader : BulkLoader = new BulkLoader("config");
loader.addEventListener(BulkLoader.PROGRESS, loadProgress);
loader.addEventListener(BulkLoader.COMPLETE, loadInit);
var context : LoaderContext = new LoaderContext(true, ApplicationDomain.currentDomain);
loader.add("EsCard.swf", {id:"main", context: context});
loader.start();

ok,这样就大功告成了

分享到:
评论

相关推荐

    BulkLoader文件加载类库

    BulkLoader文件加载类库是一个高效且实用的工具,主要用于大批量数据的导入和导出操作。在IT领域,尤其是在数据库管理和大数据处理中,快速、批量地处理数据是至关重要的。BulkLoader类库就是为了满足这样的需求而...

    flash actionscript3 as3 BulkLoader多资源加载队列的用法.ziploading加载队列bulk_loader

    另外,LoaderMax是另一款强大的资源加载库,由GreenSock团队开发。LoaderMax提供了更高级的功能,如预加载组、优先级加载和更精细的控制。如果你的项目需要更复杂的加载管理,LoaderMax可能是一个更好的选择。你可以...

    bulkloader

    BulkLoader的核心功能在于其异步加载机制,它可以同时加载多个文件,而不是逐一进行,这样大大减少了用户等待的时间。通过队列管理,BulkLoader能够按需加载资源,避免一次性加载过多内容导致的内存压力。此外,它还...

    flash 图片依次加载

    此外,为了提高性能,可以考虑使用`LoaderMax`库或`BulkLoader`类,它们提供了更高级的批量加载和队列管理功能。 总的来说,"flash 图片依次加载"是一个基础但实用的技巧,它涉及到ActionScript的基本用法,如事件...

    flash actionscript3 纯AS3代码_资源加载进度条.rar

    为了提高用户体验,可以使用`loadQueue`类或`BulkLoader`库来批量加载资源,这样可以更有效地管理多个加载任务,避免阻塞UI线程。 7. **安全与错误处理** 加载资源时,需要考虑安全策略,如跨域加载和本地文件...

    datastax-bulkloader-dse-example:此演示创建 sstable 文件并通过 jmx 将它们加载到 dse 集群

    DSE 4.5 批量加载程序示例此演示创建 sstable 文件并通过 jmx 将它们加载到 dse 集群。添加 dse-4.5.0 jar 在开始之前,您需要将 dse jar 添加到本地 Maven 存储库。 为此,请执行DSE_INSTALL_DIR/lib/目录。 在那里...

    图片Flash显示代码

    可以使用加载队列技术,如AS3的`BulkLoader`库,一次性加载多个资源,避免阻塞用户界面。 虽然现在HTML5提供了更好的原生支持来处理图片和动画,如`<img>`标签、Canvas和SVG,但了解Flash中的图片处理仍有其历史...

    TUXEDO JOLT的配置与编程简介

    BulkLoader(也称为`jbld`)是一个Java程序,用于将服务定义文件加载到Jolt Repository Database中。在使用`jbld`之前,需要确保环境变量`CLASSPATH`包含了JOLT相关的类库路径(例如`jolt.jar`和`joltadmin.jar`)...

Global site tag (gtag.js) - Google Analytics