AS3.0的加载机制(1)-----图片以及swf的加载

512141696 贡献于2013-11-19

作者 微软用户  创建于2013-11-16 09:57:00   修改者User  修改于2013-11-16 09:57:00字数2558

文档摘要: 上网浏览网页或玩游戏,都有可能会涉及到音乐,图片,swf,xml等等的资源的加载。 今天这章节主要是讲图片以及swf的加载,涉及到的类有Loader,LoaderInfo,接下来为大家详细的介绍这两个类。
关键词:

 AS3.0的加载机制(1)-----图片以及swf的加载 上网浏览网页或玩游戏,都有可能会涉及到音乐,图片,swf,xml等等的资源的加载。 今天这章节主要是讲图片以及swf的加载,涉及到的类有Loader,LoaderInfo,接下来为大家详细的介绍这两个类。 一:Loader类 在AS3.0里把所有事件,属性,加载等都集中在某个对象上了.且加载对象与各触发事件也进行了分工,这和2.0时期,用onEnterFrame和不断检测加载百分比强多了! Loader继承了基类DisplayObjectContainer,所以他可以也必须当作一个对象用addChild添加才能工作. Loader 类可用于加载 SWF 文件或图像(JPG、PNG 或 静态GIF)文件。 使用 load() 方法来启动加载。 被加载的显示对象将作为 Loader 对象的子级添加。 例:    var loadimg:Loader = new Loader();    var url:String = "http://www.shch8.com/v2007/up/UploadFile/200769182617-1.gif"    var urlReq:URLRequest = new URLRequest();    urlReq.url=url;    loadimg.load(urlReq);    addChild(loadimg); 和2.0和比,还有一点区别,这里加载时要先把字符串地址转化为url加载对象,在程序中的第三行是直接设置加载对象的url属性的,也可以这样写urlReq = new URLRequest(url),除了url属性还有几个公共属性,一般很少用到如:method用来控制get还是post提交方式。 因为把加载当作一个对象了,所以就不需要象2.0时期一样,新建一个影片来装载加对的物体loadMovie(“myimg.jpg”,”mv”),我们可以直接设置他的x/y轴或宽高。还有Loader对象是二进制方式加载swf了,在flash9之前我们做加载条是用影片的getBytesLoaded和getBytesTotal来检测的是否加载完成。这不是真正意义上的加载,只是判断帧的加载数,所以会出现类似情况,加载到20%停了很久突然跳到90%因为那一帧放了整个影片70%的数据。以前在蓝色里有讨论过这个话题,还有人说是MM在走江湖!呵,现在解决了! Loader的所有方法: 1. Loader() 创建一个可用于加载文件(如 SWF、JPEG、GIF 或 PNG 文件)的 Loader 对象。 2. close():void 取消当前正在对 Loader 实例执行的 load() 方法操作。 3.load(request:URLRequest, context:LoaderContext = null):void 将 SWF、JPEG、渐进式 JPEG、非动画 GIF 或 PNG 文件加载到此 Loader 对象的子对象中。 4.loadBytes(bytes:ByteArray, context:LoaderContext = null):void 从 ByteArray 对象中所存储的二进制数据中加载。 5.unload():void 删除此 Loader 对象中使用 load() 方法加载的子项。 二: LoaderInfo事件机制 LoaderInfo非常好用,他是继承EventDispatcher对象用来检测网络加载状态。可以把加载动作细细地解剖出来。 原来在flash9之前,我们绞尽脑汁去获取加载来的swf的宽度、高度、帧频、版本等数据,但一直没研究出好的方法现在LoaderInfo可以做到能获取加载对象的各属性,这点很好有时用swf来加载不确定swf时很有用,可以用那些属性来重新设置主swf。 加载对象所加载数据的实时检测上,PROGRESS事件可以取代以前用onEnterFrame的疯狂检测工作。当然2.0的也有自己的事件,只是很少人用! LoaderInfo所继承的所有事件: 1.complete(事件参数Event. COMPLETE)    成功加载数据后调度。   2.HttpStatus(事件参数HTTPStatusEvent.HTTP_STATUS)    在通过 HTTP 发出网络请求并且 Flash Player 可以检测到 HTTP 状态代码时调度。   3. Init(事件参数Event.INIT)    已加载的 SWF 文件的属性和方法可访问时调度。   4.IoError(事件参数IOErrorEvent.IO_ERROR)    在发生导致加载操作失败的输入或输出错误时调度。   5.Open(事件参数Event.OPEN)    在加载操作开始时调度。   6.Progress(事件参数ProgressEvent.PROGRESS)    在下载操作过程中收到数据时调度。   7.Unload(事件参数Event.UNLOAD)    每次使用 Loader 对象的 unload() 方法删除已加载对象时,或者当同一 Loader 对象执行第二次加载并且在加载开始之前删除了原始内容时,由   对象调度。 具体测试例子请看loadjpg.swf与loadswf.swf LoaderInfo的获取swf属性时要等swf加载完才能获取,也就是在COMPLETE事件里获取 如: loadswf.contentLoaderInfo.addEventListener(Event.COMPLETE, loadcom)       function loadcom(the:Event):void {           trace("AS版本:AS"+the.target.actionScriptVersion+".0")           trace("swf版本:flash"+the.target.swfVersion+".0")           trace("swf宽:"+the.target.width+"swf高:"+the.target.height)           trace("swf帧频:"+the.target.frameRate+"帧/秒")           } 事件触发的各个顺序分别是 OPEN>>INIT>>HTTP>> COMPLETE 加载操作开始时调度>>进入事件 SWF 文件的属性和方法调度>>状态事件通过 HTTP 发出网络请求并且 Flash Player检测到 HTTP 状态代码>>加载完成 加载swf会涉及到一个安全域的问题,这个将在下一章节详细介绍。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档