[开源]快速加载器-FastLoader

加载

继 SafeLoader(安全加载器) 继续开源.
以下是以速度第一为准则的载入策略,仍然具有简单的纠错机制。大家觉得这个有用的话,就顶一下。版主觉得写得还行,就跟我加分,谢谢。
FastLoader.as 源代码:

/*
* 作者姚伟。闪吧ID:hust。
* 你可以修改和使用此代码。但请著名原作者,谢谢。
* 2006.2.12
* 快速但冒险的并发载入模式--FastLoader(快速加载器)
*/
class loaders.FastLoader
{
    private static var taskArr : Array = new Array ();
    private static var mclArr : Array = new Array ();
    private static var listArr : Array = new Array ();
    public static var waitNum : Number = 0;
    public static var loadedNum : Number = 0;
    public static var loadingNum : Number = 0;
    public static var totalNum : Number = 0;
    //private var loader
    //private static var LoadID : Number;
    public static function addTask (url : String, target_mc : MovieClip )
    {
        trace ("addTask");
        taskArr.push ([url, target_mc]);
        totalNum ++;
        waitNum ++;
    }
    private static function preLoad ()
    {
        for (var i=0; i < taskArr.length; i ++)
        {
            trace ("i=" + i);
            listArr [i] = new Object ();
            listArr [i].onLoadStart = function ()
            {
                waitNum --;
                loadingNum ++;
            }
            listArr [i].onLoadProgress = function ()
            {
            }
            listArr [i].onLoadComplete = function ()
            {
            }
            listArr [i].onLoadInit = function ()
            {
                loadingNum --;
                loadedNum ++;
                //success,next
                trace ("onLoadInit");
                trace ("i=" + i);
            }
            listArr [i].onLoadError = function ()
            {
                mclArr [i].loadClip (taskArr [i][0] , taskArr [i][1]);
            }
        }
        for (var i = 0; i < taskArr.length; i ++)
        {
            mclArr [i] = new MovieClipLoader ();
            mclArr [i].addListener (listArr [i]);
        }
    }
    public static function startLoad ()
    {
        preLoad ();
        //mclArr [0].loadClip (taskArr [0][0] , taskArr [0][1]);
        for (var i = 0; i < taskArr.length; i ++)
        {
            mclArr [i].loadClip (taskArr [i][0] , taskArr [i][1]);
        }
    }
}

时间: 2024-10-29 15:30:07

[开源]快速加载器-FastLoader的相关文章

加快页面的载入速度:异步模块加载器In.js

文章简介:用In.js颗粒化管理.加载你的Javascript模块. 近一年来,国内外都十分热衷于异步加载的研究,为了加快页面的载入速度,无阻塞加载Javascript的方法和框架成为了前端开发的焦点和亮点之一. 国外的像基于jQuery的RequireJs,YUI Loader,LabJs,RunJs,国内也有淘宝的SeaJs,豆瓣的DoJs等,这些都是一些十分优秀的模块加载器.但是本文将会向大家介绍一个新的开源的轻量级"多线程"异步模块加载器In.js,In的开发借鉴了Do的一些思

概述如何实现一个简单的浏览器端js模块加载器_javascript技巧

在es6之前,js不像其他语言自带成熟的模块化功能,页面只能靠插入一个个script标签来引入自己的或第三方的脚本,并且容易带来命名冲突的问题.js社区做了很多努力,在当时的运行环境中,实现"模块"的效果. 通用的js模块化标准有CommonJS与AMD,前者运用于node环境,后者在浏览器环境中由Require.js等实现.此外还有国内的开源项目Sea.js,遵循CMD规范.(目前随着es6的普及已经停止维护,不论是AMD还是CMD,都将是一段历史了) 浏览器端js加载器 实现一个简

我理解的Android加载器

Android的加载器(loader)是从Android 3.0开始出来的东西.要理解这里需要先理解为什么会出现加载器(也有地方把它说成是装载器)呢? 如果没有加载器... 首先Activity是我们的前端页面展现,数据库是我们的数据持久化地址,那么正常的逻辑就是在展示页面的渲染页面的阶段进行数据库查询.拿到数据以后才展示页面. 但是这个逻辑有一些缺点:   首先是查询数据的逻辑放在了UI生成的同个线程中,这个就意味着在查询数据的时候,UI页面生成的工作被阻塞住了.UI一旦被阻塞用户就会被感知出

如何通过预加载器提升网页加载速度

预加载器(Pre-loader)可以说是提高浏览器性能最重要的举措.Mozilla 官方发布数据,通过预加载器技术网页的加载性能提升了19%,Chrome测试了 Alexa 排名前2000名网站,性能有20%的提升. 它并不是一门新技术,有人认为只有 Chrome 才具备这个功能.也有人认为它是有史以来提升浏览器性能最有效的方法.如果你第一次接触预加载器,也许心中已经有了无数个问号.什么是预加载器?它是如何提升浏览器性能的? 首先需要了解浏览器是如何加载网页的 一个网页的加载依赖于脚本文件.CS

详解js异步文件加载器_php实例

我们经常会遇到这种场景,某些页面依赖第三方的插件,而这些插件比较大,不适合打包到页面的主js里(假设我们使用的是cmd的方式,js会打包成一个文件),那么这个时候我们通常会异步获取这些插件文件,并在下载完成后完成初始化的逻辑. 以图片上传为例,我们可能会用到plupload.js这个插件,那么我们会这么写: !window.plupload ? $.getScript( "/assets/plupload/plupload.full.min.js", function() { self

AMD加载器实现笔记(五)

前几篇文章对AMD规范中的config属性几乎全部支持了,这一节主要是进一步完善.到目前为止我们的加载器还无法处理环形依赖的问题,这一节就是解决环形依赖. 所谓环形依赖,指的是模块A的所有依赖项的依赖中有没有依赖A模块本身的模块.如果有那就说明存在环形依赖.所以检验的方式是利用递归,检查一个模块的依赖的依赖项中有没有依赖A模块,以及依赖项的依赖项的依赖项中有没有A模块,核心代码如下: function checkCircleRef(start, target){ var m = modules[

AMD加载器实现笔记(一)

代码我是有看过的,基本的原理也都明白,但实际动手去实现却是没有的.因为今年计划的dojo教程<静静的dojo>中,有一章节来专门讲解AMD,不免要把对AMD的研究回炉一下.时隔多日,再回头探索AMD实现原理时,竟抓耳挠腮,苦苦思索不得要领.作为开发人员,深感惭愧.故有此文,记录我在实现一个AMD加载器时的思考总结.   requireJS是所有AMD加载器中,最广为人知的一个.目前的版本更凝聚了几位大牛数年心血,必然不是我这个小虾米一晚上的粗制滥造能够比拟的,所以目前为止这篇文章里的加载器尚不

《JavaScript框架设计》——2.2 加载器所在路径的探知

2.2 加载器所在路径的探知 要加载一个模块,我们需要一个URL作为加载地址,一个script作为加载媒介.但用户在require时都用ID,因此我们需要一个将ID转换为URL的方法.思路很简单,强加个约定,URL的合成规则为. basePath + 模块ID + ".js" 由于浏览器自上而下分析DOM,当浏览器在解析我们的JavaScript文件(这个JavaScript文件是指加载器)时,它就肯定DOM树中最后加入的script标签.因此,我们有下面这个方法. function

AMD加载器实现笔记(四)

继续这一系列的内容,到目前为止除了AMD规范中config的map.config参数外,我们已经全部支持其他属性了.这一篇文章中,我们来为增加对map的支持.同样问题,想要增加map的支持首先要知道map的语义. 主要用于解决在两个不同模块集中使用一个模块的不同版本,并且保证两个模块集的交互没有冲突. 假设磁盘有如下文件: 当'some/newmodule'请求'foo'模块时,它将从foo1.2.js总得到'foo1.2'模块:当'some/oldmodule'请求'foo'模块时它将从foo