【轉載】全新的加載(Loading)機制

原文地址:http://eduvnet.yesky.com/design/378/7567878_2.shtml

做一個loading預加載的效果相信大家都已經非常熟悉了,不管是用onEnterFrame還是setInterval,還是更高級的 MovieClipLoader。可當開始用AS3的時候,便連一個最簡單的loading都無從下手了。是不是AS3中的loader更加複雜,難以控制呢。其實不是的,在AS3中引入了一個全新的類LoaderInfo,這個類可作用於任何的可顯示對象(display object),這個對象裏包含了加載過程檢測、加載地址、加載對象的內容、加載對象總字節數(和加載過程中的字節數)、加載對象的寬度高度等等非常多的內容(內容太多了,更多的大家可以去看幫助)。
有2種方式可以訪問LoaderInfo對象:
1)訪問flash.display.Loader對象的contentLoaderInfo屬性;
2)任何一個可顯示對象(display object)都有loaderInfo屬性;
注意:每個SWF文檔的主類的實例有loaderInfo屬性,每個Loader有loaderInfo屬性,同時它有一個contentLoaderInfo屬性,通過這個屬性你可以訪問到Loaded對象的loaderInfo。具體可以看下圖:

Flash Action.知識:從 AS2 到 AS3

  下面還是老習慣,來例子示範。首先來一個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對象作爲參數;另外就是ProgressEvent類,比較簡單,看幫助就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章