做一個(gè)loading預(yù)加載的效果相信大家都已經(jīng)非常熟悉了,不管是用onEnterFrame還是setInterval,還是更高級(jí)的 MovieClipLoader。可當(dāng)開始用AS3的時(shí)候,便連一個(gè)最簡(jiǎn)單的loading都無從下手了。是不是AS3中的loader更加復(fù)雜,難以控制呢。其實(shí)不是的,在AS3中引入了一個(gè)全新的類LoaderInfo,這個(gè)類可作用于任何的可顯示對(duì)象(display object),這個(gè)對(duì)象里包含了加載過程檢測(cè)、加載地址、加載對(duì)象的內(nèi)容、加載對(duì)象總字節(jié)數(shù)(和加載過程中的字節(jié)數(shù))、加載對(duì)象的寬度高度等等非常多的內(nèi)容(內(nèi)容太多了,更多的大家可以去看幫助)。
有2種方式可以訪問LoaderInfo對(duì)象: 1)訪問flash.display.Loader對(duì)象的contentLoaderInfo屬性; 2)任何一個(gè)可顯示對(duì)象(display object)都有l(wèi)oaderInfo屬性;
注意:每個(gè)SWF文檔的主類的實(shí)例有l(wèi)oaderInfo屬性,每個(gè)Loader有l(wèi)oaderInfo屬性,同時(shí)它有一個(gè)contentLoaderInfo屬性,通過這個(gè)屬性你可以訪問到Loaded對(duì)象的loaderInfo。具體可以看下圖:
下面還是老習(xí)慣,來例子示范。首先來一個(gè)loading外部文件的例子: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對(duì)象作為參數(shù);另外就是ProgressEvent類,比較簡(jiǎn)單,看幫助就好了。
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2744638-1-2.html
本文鏈接:http://m.95time.cn/tech/multimedia/2007/4706.asp
出處:藍(lán)色理想
責(zé)任編輯:elesa
上一頁 訪問控制以及命名空間 下一頁
◎進(jìn)入論壇Flash專欄版塊參加討論
|