FLASH AS3 loading

AS2的时候做LOADING有很多种方法,做起来也得心应手。可是到AS3的时候做LOADING的时候却无从下手,抓瞎了几天。因为在AS3中引入了一个全新的类LoaderInfo,这个类可作用于任何的可显示对象(display object),这个对象里包含了加载过程检测、加载地址、加载对象的内容、加载对象总字节数(和加载过程中的字节数)、加载对象的宽度高度等等非常多的内容。

 

有2种方式可以访问LoaderInfo对象:


1)访问flash.display.Loader对象的contentLoaderInfo属性;


2)任何一个可显示对象(display object)都有loaderInfo属性;

 

注意:每个SWF文档的主类的实例有loaderInfo属性,每个Loader有loaderInfo属性,同时它有一个contentLoaderInfo属性,通过这个属性你可以访问到Loaded对象的loaderInfo。

 

下面还来例子示范。


首先来一个loading外部文件的例子:

CODE:
var request:URLRequest = new URLRequest("flashrek.swf");
var loader:Loader = new Loader();

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);

function loadProgress(event:ProgressEvent):void {
    var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
    percentLoaded = Math.round(percentLoaded * 100);
    trace("Loading: "+percentLoaded+"%");
}
function loadComplete(event:Event):void {
    trace("Complete");
}

loader.load(request);
addChild(loader);

 

这里要注意loader的load方法只接受URLRequest对象作为参数;另外就是ProgressEvent类,比较简单,看帮助就好了。

这里只是LOAD外部对象,如何做自身LOADING还要再研究研究,等有了答案再更新。

 

 


更新自身Loading

 

code:

stop();
import flash.display.LoaderInfo;
import flash.events.ProgressEvent;
import flash.text.TextField;
var loadText:TextField=new TextField();
addChild(loadText);
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,myloadmovie);
this.loaderInfo.addEventListener(Event.COMPLETE,myover);
function myloadmovie(event:ProgressEvent):void {
    var hl:Number=event.bytesLoaded/event.bytesTotal;
    var n:Number=Math.round(hl*100);
    loadText.text=n+"%";
}
function myover (event:Event):void {
    this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS,myloadmovie);
    nextFrame();
}

 

 

下面是另一种自身loading的方法

 

CODE:


stop();
import flash.display.LoaderInfo;
import flash.events.ProgressEvent;
import flash.text.TextField;
var loadText:TextField=new TextField();
loadText.x=220;
loadText.y=200;
addChild(loadText);
myload.addEventListener(Event.ENTER_FRAME,onEnterFramee);
function onEnterFramee (event:Event) {
    if (framesLoaded==totalFrames) {
        trace(1);
        myload.removeEventListener(Event.ENTER_FRAME,onEnterFramee);
        nextFrame();
    }
    else {
        var percent:Number=root.loaderInfo.bytesLoaded/root.loaderInfo.bytesTotal;
        var m:Number=Math.round(percent*100);
        myload.gotoAndStop(m);
        loadText.text=m+"%";
    }
}        //myload为场景中预设的loading动画的MC名字 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值