gamepackage之Loader研究

原创 2006年06月22日 21:42:00
闲来无聊研究了一下gamepackage里面的一个Loader和LoadQueue...发现作者确实是太牛X了,我已经对他pf的5体趴地了....


先看class Loader,作者没有用Flash自带的MovieClipLoader来实现,而是自己写了一个算法,估计是为了兼容他自己的框架吧.
看代码,不去管里面的细节,像implements Executeable还有 Impulse.connect(this)...等这些都是作者整个package框架的实现.

首先构造函数中,定义了一些必要的参数.并且使用了隐藏的AsBroadcaster来广播一些事件.这里是关键,等下到LoadQueue的时候可以看到作者的巧妙运用.

load方法,就是一个下载的开始.

接着私有的loadClip方法,就是作者自己写的一个loading算法模拟MovieClipLoader(简称MCL)的,要好好研究一下,可以看出作者对flash的雄厚造诣.

其中mode==1时候的判断,是判断下载的文件是否已经被连接到,如果连接到了,说明 容器._url和下载文件的url肯定一样了,那这个时刻正好就是,文件被正确连接到的时候.广播onLoaderRequest事件.在MCL里这个事 件就是onLoadStart.这个技巧很棒...

当正确连接到文件后,估计flash player要获得加载文件的总大小,在获得之前totalbytes是等于-1的.所以先判断是否等于-1,当大于-1了,说明文件真正开始下载了.这 个时候广播onLoaderStart.在MCL中,没有准确的这个事件,可能MM的人没想过要这么精细.因为在准确连接到文件的时候,已经可以对容器做 初始操作了.

用过loadMovie的人应该都知道,容器在loadMovie之前,指的还是主文件中的mc.如果这个时候给mc定义一些属性值,在loadMovie之后之前定义的属性值都没有了.
最好的办法是在外部swf加载进来时再对容器进行一些属性的定义.
那什么时刻容器才开始等于外部的swf了呢?记得以前,我只是判断 容器.getBytesTotal,但getBytesTotal这个函数很是莫名,比如在没有loadMovie时,一个mc的 getBytesTotal等于0,而如果在loadMovie请求连接时,又等于-1,连接到了后,一开始几帧又是0,反正和网速有很大的关系,实在没 法准确判断,而作者使用_url来判断,无疑要比getBytesTotal来的准确清晰.


接下去的都是常规判断了,而当mode==4的时候,作者的判断好像缺乏实际意义,我测试下来.作者的onLoaderComplete和 onLoaderInit事件触发的情况都差不多.而MCL中onLoadComplete和onLoadInit就很明显区别,MCL中的 onLoadComplete是在外部swf文件完成加载后,第一帧还没有任何执行前.
执行AS步骤是
MCL.onLoadComplete
外部SWF第一帧AS
MCL.onLoadInit
可以说MCL在下载完结时刻的判断要更精确.

作者毕竟是在Flash的基础上写的.没有MCL那么强大(flash8的话,MCL在onLoadError的时候能给出httpStatus),不过除非特别需要,这样已经足够用了.

WebPack系列教程(六):使用LOADERS

什么是loaders? loaders被应用于应用程序的资源文件中,通常用来做转换。它们都是函数(运行在nodejs中),将资源文件的源码作为入参,处理完后,返回新的源码文件。 例如,你可以使用lo...
  • zzzkk2009
  • zzzkk2009
  • 2016年03月09日 11:12
  • 6800

浅谈webpack最强大的功能——Loaders

1、Loaders Loaders是webpack中最强大的功能之一了。通过使用不同的loader,webpack通过调用外部的脚本或工具可以对各种各样的格式的文件进行处理,如分析JSON文件并把它转...
  • zhouziyu2011
  • zhouziyu2011
  • 2017年04月03日 22:50
  • 3025

Loader之一:基本原理

参考APIDEMO及http://developer.android.com/guide/components/loaders.html#app 1、Introduced in Android 3...
  • jediael_lu
  • jediael_lu
  • 2013年11月16日 10:29
  • 3365

webpack3最新版本配置研究(二)loader

接上面的loaderurl-loader 现在来我们来试试加载图片,第一件事情肯定是安装对应的loader,可以将小图片转换成base64,减少请求 npm install url-loader ...
  • qq_20334295
  • qq_20334295
  • 2017年07月10日 18:55
  • 3739

Android-Universal-Image-Loader异步加载图片框架学习研究

GitHub下载地址  https://github.com/nostra13/Android-Universal-Image-Loader  先来看一下Android-Universal-Imag...
  • cc20032706
  • cc20032706
  • 2014年07月03日 09:26
  • 292

Android-Universal-Image-Loader异步加载图片框架学习研究

GitHub下载地址  https://github.com/nostra13/Android-Universal-Image-Loader 先来看一下Android-Universal-Im...
  • huangbiao86
  • huangbiao86
  • 2014年04月02日 10:16
  • 13051

Android-Universal-Image-Loader的缓存处理机制研究

讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西。看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制。...
  • u013812939
  • u013812939
  • 2015年07月07日 15:57
  • 384

Android-Universal-Image-Loader异步加载图片框架学习研究

GitHub下载地址  https://github.com/nostra13/Android-Universal-Image-Loader  先来看一下Android-Universal-Imag...
  • missxxx100
  • missxxx100
  • 2014年09月15日 13:50
  • 221

Navicat.Premium.v12.0.11.x86.x64.[CN][TW][EN].Dll.Loader破解注册机 绿色版

  • 2017年11月01日 11:19
  • 48KB
  • 下载

Informatica PowerCenter 调用Teradata Loader工具说明

  • 2017年11月08日 10:07
  • 2.19MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gamepackage之Loader研究
举报原因:
原因补充:

(最多只允许输入30个字)