類似這種功能最好就是封閉成一個類,直接調用。
比如要在loading圖片的時候顯示一個背景gif圖(表示正在加載圖片)或是顯示加載進步等等
重點:學會使用flash.display.Loader及flash.net.URLRequest
難點:在Event.COMPLETE回調方法中,如何將event對象轉換成所需要的bitmap對象
有兩種方法:
1、var loader:Loader = Loader(e.target.loader);var bitmap:Bitmap = Bitmap(loader.content);
2、var bitmap:Bitmap = e.currentTarget.content as Bitmap;
推薦用第二種,看上去比較簡潔一些。
下面類ImageLoader的代碼:
package { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.URLRequest; public class ImageLoader extends Sprite { private var loader:Loader; private var w:Number; private var h:Number; public function ImageLoader(_w:Number, _h:Number, url:String) { super(); this.w = _w; this.h = _h; loader = new Loader(); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.load(new URLRequest(url)); trace(loader); } private function progressHandler(e:ProgressEvent):void { var num:uint = (e.bytesLoaded / e.bytesTotal) * 100; trace('已加載--' + num + "%"); } private function completeHandler(e:Event):void { var loader:Loader = Loader(e.target.loader); var bitmap:Bitmap = Bitmap(loader.content); // var bitmap:Bitmap = e.currentTarget.content as Bitmap; // trace(bitmap); trace(bitmap.width + '--' + bitmap.height); bitmap.x = 0; bitmap.y = 0; this.addChild(bitmap); } } }
使用方法也很簡單,例如下面的
var img:ImageLoader = new ImageLoader(100, 100, 'http://www.baidu.com/img/baidu_logo.gif'); addChild(img);
加載百度的logo
代碼運行的效果,我默認調試打開的是firefox<安裝了Flashbug>,控制檯上能看到相應trace出來的信息